2013-07-16 4 views
1

У меня есть операция касания, которая является триггером для изменения размера сценария, где операция начинается при касании, перемещается и должна заканчиваться на touchEnded. Дело в том, что touchsEnd может быть на другом представлении пользовательского интерфейса, поскольку пользователь перетаскивает палец. Как зарегистрировать * глобальный»touchesEnded слушателя?Глобальный обработчик событий для Touch Up Inside

ответ

5

Вы должны использовать UIPanGestureRecognizer. Каждый раз, когда он запускает, проверьте state жеста распознаватель. Если это UIGestureRecognizerStateBegan то точка зрения первого прикосновения, если это UIGestureRecognizerStateChanged то пользователь перемещает свой палец, если он UIGestureRecognizerStateEnded, тогда пользователь поднял палец.

Пока этот жест начинается с вашего вида, он будет продолжать (если не отменен) даже после того, как выйдет за пределы видимости, t необходимо беспокоиться о том, чтобы «сделать его глобальным».

Инициализировать распознаватель жестов с помощью:

UIPanGestureRecognizer *dragViewGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handleDragView:)]; 
dragViewGestureRecognizer.maximumNumberOfTouches = 1; 
[yourView addGestureRecognizer:dragViewGestureRecognizer]; 

Затем заполните следующий метод с кодом вам нужно:

- (void)handleDragView:(UIPanGestureRecognizer*)panGestureRecognizer { 
    switch (panGestureRecognizer.state) { 
     case UIGestureRecognizerStateBegan: { 
      //Code when dragging starts 
      break; 
     } case UIGestureRecognizerStateChanged: { 
      //Code while dragging is happening (if needed) 
      break; 
     } case UIGestureRecognizerStateEnded: { 
      //Code when dragging ends 
      break; 
     } 
     default: 
      break; 
    } 
} 
+0

Это здорово !! как я могу получить UIView, что в данный момент находится палец? – user2453876

+0

Событие запускается только в том случае, если начальное касание «захвачено» по представлению, которое вы добавили обработчику жестов ('yourView' в код выше). Если у нескольких диспетчеров жестов при просмотре нескольких видов доступ к одному и тому же методу, вы можете получить представление, которое вызвало событие, обратившись к 'panGestureRecognizer.view' из метода' handleDragView: '. – Ander

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