Прослушивание события UITouch вместе с UIGestureRecognizer - PullRequest
7 голосов
/ 20 марта 2012

Я создаю пользовательский UIView и добавляю в него UITapGestureRecognizer. У меня есть обработчик для жеста касания. Но в то же время я хочу, чтобы мой UIView слушал методы touchesBegan & touchesEnded. Я также реализовал gestRecognizer: shouldReceiveTouch: метод, но методы touchesBegan / touchesEnded не вызывается. Любая подсказка, почему?

Внутри моего пользовательского UIView

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)iGestureRecognizer shouldReceiveTouch:(UITouch *)iTouch {
    return YES;
}

Внутри моего контроллера зрения

MyCustomView aCustomView = [[[MyCustomView alloc] init] autorelease];
                UIGestureRecognizer *myGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
[aCustomView addGestureRecognizer:myGestureRecognizer];
                [myGestureRecognizer release];

Ответы [ 2 ]

10 голосов
/ 20 марта 2012

Вам необходимо установить cancelsTouchesInView (и, вероятно, delaysTouchesBegan и delaysTouchesEnded) на NO для распознавателя жестов.Поведение по умолчанию для распознавателя жестов состоит в том, чтобы избегать касания как его, так и представления.Эти настройки позволяют вам точно настроить это поведение.

0 голосов
/ 18 декабря 2015

Как указывалось ранее, вам необходимо установить для свойства cancelTouchesInView значение NO на вашем UITapGestureRecognizer.

Из документов Apple:

cancellsTouchesInView - если распознаватель жестов распознает его жест, он связывает оставшиеся штрихи этого жеста с их точки зрения (так окно не доставит их). Окно отменяет ранее доставлены касания с сообщением (touchesCancelled: withEvent :). Если распознаватель жестов не распознает его жест, представление получает все касания в последовательности мультитач.

Дополнительное чтение: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIGestureRecognizer_Class/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...