Как передать «нажатие» на UIButton под UIView с помощью UISwipeGestureRecognizer? - PullRequest
14 голосов
/ 30 августа 2011

У меня есть UIButton под (прозрачным) UIView.В UIView выше добавлен UISwipeGestureRecognizer, и это его единственная цель - обнаруживать определенные жесты смахивания.Я хочу, чтобы все другие штрихи игнорировались этим UIView и передавались другим взглядам (например, моему UIButton внизу).В настоящее время UIView выше, кажется, обнаруживает касание (например), ничего не делает (как и должно быть) и не дает UIButton внизу получить возможность ответить.

Я бы предпочел не реализовывать мойсобственный распознаватель пролистывания, если это возможно.Любые решения / советы?По сути, я просто хочу знать, как сказать UIView уделять внимание только определенному типу добавленного распознавателя жестов и игнорировать (и, следовательно, пропускать к представлениям позади) все другие касания.

Ответы [ 4 ]

14 голосов
/ 12 сентября 2011

Вы установили:

mySwipeGesture.cancelsTouchesInView = NO;

, чтобы разрешить отправку касаний в иерархию представления, а также жест?

Кроме того, убедитесь, что представление сверху:

theTransparentView.opaque = NO;
theTransparentView.userInteractionEnabled = YES;

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

3 голосов
/ 30 августа 2011

Должно быть, я вчера был в шоке - сегодня я проснулся с простым решением. Добавьте UISwipeGesture к представлению, которое является суперпредставлением как UIView, так и UIButton. Затем, при обработке этих свайпов, выясните, где произошел свайп, и находится ли эта точка в кадре того места, где я использовал UIView. (Как я уже упоминал, единственной причиной существования UIView было определение целевой области для этих жестов смахивания.)

0 голосов
/ 12 января 2015

В моем случае я исправил это, не используя кнопку, а скорее UITapGestureRecognizer. Мой распознаватель жестов панорамирования был добавлен в фоновое представление, а жест касания был добавлен в представление над ним.

0 голосов
/ 30 августа 2011

Разве вы не можете поместить свою кнопку поверх вида и добавить распознаватели жестов к этой кнопке?

В конце концов, ваша UIButton наследует UIView через UIControl. Поэтому практически нет ничего, что вы могли бы сделать с видом, но не с помощью кнопки.

...