цель UITapGestureRecognizer больше не вызывается под iOS 5 больше - PullRequest
1 голос
/ 25 октября 2011

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

_tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showModalDetailView:)];

В iOS 4.3 это работало идеально. В iOS 5 -showModalDetailView: больше не вызывается.

Мне было интересно, есть ли у кого-нибудь еще эта проблема?

Обновление

Я настраиваю распознаватель так:

_tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showModalDetailView:)];
_tapGesture.numberOfTapsRequired = 1;
_tapGesture.numberOfTouchesRequired = 1;
_tapGesture.delegate = self;
[self addGestureRecognizer:_tapGesture];

Обновление 2

Хорошо, теперь это становится странным. Код снова начинает работать, как только я отключаю настройку делегата, комментируя его. Однако методы делегата все еще вызываются. Но не всегда.

Ячейка имеет выровненный по левому краю заголовок и выровненный по правому краю текст детализации. Когда вы нажимаете подробный текст, он работает должным образом: метод делегата не вызывается, и появляется всплывающее окно. Когда вы попадаете в ячейку где-то еще, вызывается метод делегата (в данном случае -gestureRecognizer:shouldReceiveTouch:) и появляется всплывающее окно.

Я не совсем понимаю, что здесь происходит.

Ответы [ 2 ]

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

Теперь, когда я реализовал все три метода делегата (хотя они и необязательны), это работает. Просто возвращаю значения по умолчанию. Спасибо, Данкельстерн и Томас.

0 голосов
/ 30 октября 2011

Попробуйте установить для numberOfTouchesRequired и numberOfTapsRequired значение 1 в явном виде. И, конечно же, вам нужно вызвать addGestureRecognizer для вашего экземпляра View.

...