Использование UITapGestureRecognizer для отображения / скрытия меню - PullRequest
3 голосов
/ 01 августа 2010

Я пытаюсь найти хороший способ показывать / скрывать мои меню точно так же, как в iBooks.Для этого я настроил UITapGestureRecognizer, но, к сожалению, это означает, что ни одна из кнопок на экране не работает.Я знаю, что могу использовать

tapRecognizer.cancelsTouchesInView = NO;

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

Есть ли способ для меня, чтобы остановить UITapGestureRecognizer от определенных кнопок или действий?Или есть лучший способ сделать это в целом?

Большое спасибо заранее за любую помощь, которую вы можете мне оказать!

: - Джо

Ответы [ 2 ]

5 голосов
/ 22 октября 2010

Если кому-то понадобится небольшой код для понимания решения Джо, вы должны сначала реализовать протокол UIGestureRecognizerDelegate (т.е. @interface YourViewController : UIViewController <UIGestureRecognizerDelegate>).

В классе, который реализует протокол UIGestureRecognizerDelegate, вы должны реализовать - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch. Там вы можете проверить, является ли touch.view кнопкой. В моей реализации я использовал return !([touch.view isKindOfClass:[UIButton class]]);, но вам может потребоваться расширить его, если у вас есть другие сенсорные компоненты, в которых вы не хотите запускать распознаватель касаний.

3 голосов
/ 01 августа 2010

Я решил это (или кто-то другой решил это для меня), поэтому я решил поделиться с вами:

Вернуть NO из метода делегатаэто одна из ваших кнопок.

...