2010-07-31 3 views
3

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

tapRecognizer.cancelsTouchesInView = NO; 

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

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

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

: -Joe

ответ

5

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

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

3

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

Возвращение NO из метода делегата gestureRecognizer: shouldReceiveTouch: если touch.view - одна из ваших кнопок.

+0

Удивительно, спасибо, что поделились своим решением! У меня была точно такая же проблема. –

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