Удалите UIPanGestureRecognizer после добавления его для просмотра - PullRequest
0 голосов
/ 24 октября 2011

У меня есть вид, и я хочу, чтобы пользователь мог рисовать на нем после вкладки a UIButton, я делаю это с помощью UIPanGestureRecognizer, добавляю UIPanGestureRecognizer этот вид после касания UIButton, но проблема заключается в том, чтокак я могу удалить это UIPanGestureRecognizer после того, как я закончил рисовать и снова коснуться UIButton ??

Ответы [ 3 ]

3 голосов
/ 24 октября 2011

В UIView есть метод с именем

- (void)removeGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer

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

- (void)removeTarget:(id)target action:(SEL)action
0 голосов
/ 13 декабря 2013

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

Что такое objc_setAssociatedObject () и в каких случаях его следует использовать?

Таким образом, в верхней части вашего файла .m вы должны поместить

static char overviewKey;

, а затем непосредственно перед добавлением UIPanGestureRecognizer к представлению вы пометите его какstring.

objc_setAssociatedObject(panGesture, &overviewKey, @"pan gesture for drawing", OBJC_ASSOCIATION_RETAIN_NONATOMIC);

[someView addGestureRecognizer:panGesture];

Если вы хотите удалить UIPanGestureRecognizer, вы должны пройти через все распознаватели жестов в этом представлении, найти тот со строкой и удалить его.

for (UIGestureRecognizer *gesture in someView) {

  NSString *gestureTag= objc_getAssociatedObject(gesture, &overviewKey);


  if (gestureTag==nil) {

    continue;

   }

  if ([gestureTag isEqual:@"pan gesture for drawing"]) {

    [ someView removeGestureRecognizer:gesture ];

  }   
}
0 голосов
/ 24 октября 2011
UIPanGestureRecognizer gestureRecognizer.cancelsTouchesInView = NO;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...