Распространение 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];
Значения, конечно, могут варьироваться в зависимости от того, чего вы хотите достичь.
Надеюсь это поможет.
Ура!