Распространение Touch Events в iOS

Я ищу решение для самых основных проблем в разработке IOS.

У меня есть такая настройка UIViewController (Full Screen) ----> UIView-Parent (Full Screen) ----> UIView-Child (Full Screen)

UIView-Child подписался на событие UITapGestureRecognizer, а UIView-Parent подписался на событие touchesBegan: withEvent

Когда в любом месте экрана происходит касание, событие переходит к UIView-Child, а также к UIView-Parent, когда оба слушают разные события.

Но мне нужно, чтобы все события останавливались в самом UIView-Child и не распространялись на UIView-Parent.

Одним из способов является реализация всех слушателей событий в UIView-Child с использованием пустых функций, но я уверен, что должен быть лучший способ сделать это. Может ли кто-нибудь помочь мне в этом.

В моем вопросе есть вторая часть. Если UIView-Parent также начинает распознавать событие UITapGestureRecognizer, то, как UIView-Child реализовал его, оно не распространяется на UIView-Parent. Есть ли способ, если это необходимо, я могу сделать это распространение от UIView-Child до UIView-Parent.

1 ответ

Чтобы не касаться родителя, когда вы показываете ребенка, вы можете сделать это:

[parentView setUserInteractionEnabled:FALSE];

и переверните это, когда закончите. Я думаю, что это самый простой способ.

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

[gestureRecognizer setDelaysTouchesBegan:TRUE];
[gestureRecognizer setDelaysTouchesEnded:TRUE];
[gestureRecognizer setCancelsTouchesInView:TRUE];

Значения, конечно, могут варьироваться в зависимости от того, чего вы хотите достичь.

Надеюсь это поможет.

Ура!

Другие вопросы по тегам