В моем представлении есть панель инструментов с двумя кнопками типа UIBarButtonItem
. Я пытаюсь реализовать распознаватель жестов таким образом, чтобы при нажатии в любом месте представления, кроме панели инструментов, я вызывал селектор. Нажатие на элемент кнопки панели на панели инструментов должно вызвать метод действия этой кнопки. Представление соответствует протоколу UIGestureRecognizerDelegate
и реализует метод shouldReceiveTouch
следующим образом:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *) touch {
// Disallow recognition of tap gestures in the toolbar
if ((touch.view == self.sideOneBarButton.customView) &&
(gestureRecognizer == self.tapRecognizer)) {
return NO;
}
return YES;
}
Проблема в том, что когда я нажимаю на кнопку на панели инструментов, touch.view
имеет тип UTToolbarTextButton*
, который является недокументированным классом, поэтому мой оператор if не выполняется, и shouldReceiveTouch
всегда возвращает YES, а событие кнопки никогда не вызывается .
В идеале я хотел бы сказать: если касание находится где-нибудь на панели инструментов, тогда верните нет. Какой лучший способ сделать это?