У меня есть UIView
subclass
, который отображает некоторый контент поверх camera preview
(AR
, но не ARKit
). В этом представлении я использую touchesBegan
и touchesEnded
, чтобы определить, нажимал ли пользователь на отображаемые объекты. Теперь у меня есть этот вид embedded
в controller
внутри UINavigationController
, а в этом NavigationController
включено отображение/скрытие полос при нажатии. Я хотел бы сделать так, чтобы, если я обнаруживал нажатие на объект внутри ARView
, я мог выполнить какое-то действие, но тогда касания не принимались NavigationController
, поэтому полосы скрывались, только если я нажимаю на фон. Как я могу заблокировать дальнейшую отправку сенсорных событий в такой ситуации?
Отменить сенсорные события для других представлений
Ответы (2)
Итак, если я вас правильно понял, вы хотите распознавать оба события и вызывать методы обоих жестов, верно? Если это так, попробуйте этот фрагмент кода:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
Этот метод позволяет распознавать несколько жестов
person
Bliss
schedule
03.10.2018
Ну не всегда. На данный момент это уже работает таким образом - я получаю оба обнаруженных касания Ended в моем подпредставлении, а также скрываются панели на навигационном контроллере. Я хочу иметь возможность каким-то образом заблокировать эти полосы, чтобы скрыть, если мое касание подвида было в особом месте подвида. Я не реализовывал касания NavigationController, это делает SDK, я просто выбрал некоторые параметры в раскадровке. Таким образом, я хочу иметь возможность ограничивать касания только моим подвидом, но не всегда - только если я решу это после обнаружения касаний. Также я не использую GestureRecognizers, просто touchesBegan и touchesEnded.
- person Damian Dudycz; 03.10.2018
На самом деле я думаю, что я мог бы изменить свой код, чтобы использовать распознаватель жестов, и тогда это могло бы работать. Спасибо.
- person Damian Dudycz; 03.10.2018
Если вы хотите ограничить количество касаний в разных представлениях, вы можете изменить свойство userInteractionEnabled
для каждого условия, которое вам нравится.
Если для этого свойства задано значение false, для выбранных представлений не будут приниматься события касания.
person
Mohamad Sheikh
schedule
03.10.2018