iOS TapGestureRecognizer съедает двойной тап для numberOfTapsRequired=1

У меня есть MPMoviePlayerViewController, и я помещаю UIView поверх него, чтобы распознавать однократное касание, затем я могу показать панель управления для видео, а двойное касание должно увеличивать/уменьшать масштаб воспроизведения видео, поэтому я установил numberOfTapsRequired=1 для распознавателя жестов. , но когда делаю двойной тап, видео не масштабируется а панель управления отображается и потом исчезает как будто было два одинарных тапа.

есть ли способ ее решить?

Спасибо!


person hzxu    schedule 08.09.2011    source источник
comment
это может помочь title="как коснуться, чтобы увеличить, и дважды коснуться, чтобы уменьшить масштаб с помощью uiscrollview"> stackoverflow.com/questions/9008975/   -  person Gaz_Edge    schedule 17.02.2014


Ответы (1)


да. [UIGestureRecognizer requireGestureRecognierToFail:] предназначен именно для этой цели. Настройте распознаватель жестов одиночного касания так, чтобы распознаватель жестов двойного касания не работал. Если не получится, то произойдет зум. Если это не удается (т. е. вы нажали только один раз, а не дважды), тогда появится панель управления.

person Community    schedule 08.09.2011
comment
Так что мне добавить распознаватель двойного нажатия в представление? Если я это сделаю, он распознает двойное касание, которое затем не будет передано в основной вид воспроизведения видео? Кроме того, я хочу подчеркнуть, что у меня есть еще один UIView поверх представления видеоплеера, иначе я не могу добавить распознаватель в MPMoviePlayerViewController.view (или могу?) Спасибо! - person hzxu; 08.09.2011
comment
Да, вы также добавляете двойное касание в представление. Чтобы обойти невозможность добавления свойств в MPMoviePlayerViewController, я создал свой собственный AVPlayer проигрыватель фильмов на основе NGMoviePlayer. Возможно, вы не захотите идти по этому несколько экстремальному пути (я делал это для поддержки рекламы и других вещей). - person ; 08.09.2011
comment
Попробовал, теперь тап-тап не заставит панель управления появляться и исчезать, но воспроизведение фильма все равно не масштабируется, так как передать двойной тап на проигрыватель фильмов? Спасибо! - person hzxu; 08.09.2011
comment
Чтобы выполнить масштабирование, дважды коснитесь вызова функции, которая переключает scalingMode объекта MPMoviePlayerController внутри MPMoviePlayerViewController между AspectFit (уменьшено) и AspectFill (увеличено). Я подчеркиваю, что вы должны сначала изучить эту документацию самостоятельно, а не спрашивать людей здесь. Если документация не отвечает на ваш вопрос, спросите. - person ; 08.09.2011