2010-03-27 4 views
0

Я пишу приложение, в котором пользователь должен перемещать некоторые вещи на экране пальцами и бросать их. Для этого я использую функцию touchhesBegan, touchesEnded ... для каждого вида, которое нужно переместить.Отмена событий UITouch, когда вид закрыт по модулю UIViewController

Проблема заключается в том, что иногда виды охватываются видом, отображаемым с помощью функции [UIViewController presentModalViewController]. Как только это произойдет, UIView, который я двигал, перестает получать события касания, поскольку он был закрыт. Но нет события, сообщающего мне, что он прекратил получать события, поэтому я могу сбросить состояние перемещенного представления.

Ниже приведен пример, демонстрирующий это. Эти функции являются частью UIView, которая отображается в главном окне. Он слушает прикосновение к событиям, и когда я перетаскиваю палец на некоторое расстояние, он представляет собой модальный вид, который охватывает все. В журнале запуска он печатает, какие события касаются.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touchesBegan"); 

    touchStart=[[touches anyObject] locationInView:self]; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    CGPoint touchAt=[[touches anyObject] locationInView:self]; 
    float xx=(touchAt.x-touchStart.x)*(touchAt.x-touchStart.x); 
    float yy=(touchAt.y-touchStart.y)*(touchAt.y-touchStart.y); 
    float rr=xx+yy; 

    NSLog(@"touchesMoved %f",rr); 
    if(rr > 100) { 
    NSLog(@"Show modal"); 
    [viewController presentModalViewController:[UIViewController new] animated:NO]; 
    } 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touchesEnded"); 
} 

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touchesCancelled"); 
} 

Но когда я тестирую приложение и запускаю отображаемое модальное диалоговое окно, следующим является вывод в журнале запуска.

[Сессия началась в 2010-03-27 16:17:14 -0700 .] 2010-03-27 16: 17: 18,831 modelTouchCancel [2594: 207] touchesBegan 2010-03-27 16: 17: 19,485 modelTouchCancel [2594: 207] touchesMoved 2.000000 2010-03-27 16: 17: 19,504 modelTouchCancel [2594: 207] touchesMoved 4.000000 2010-03-27 16: 17: 19,523 modelTouchCancel [ 2594: 207] touchhesMoved 16.000000 2010-03-27 16: 17: 19.538 модельTouchCancel [ 2594: 207] touchesMoved 26.000000 2010-03-27 16: 17: 19,596 modelTouchCancel [2594: 207] touchesMoved 68.000000 2010-03-27 16: 17: 19,624 modelTouchCancel [2594: 207] touchesMoved 85.000000 2010 -03-27 16: 17: 19,640 modelTouchCancel [2594: 207] touchesMoved 125.000000 2010-03-27 16: 17: 19,641 modelTouchCancel [2594: 207] Показать модальный

Любые предложения о том, как для сброса состояния UIView, когда его события касания прерываются модальным представлением?

ответ

0

Если вы контролируете отображение модального вида, можете ли вы одновременно отправить уведомление, чтобы сообщить остальной части вашего приложения, что они должны сбросить перемещенное представление?

 Смежные вопросы

  • Нет связанных вопросов^_^