У меня есть смежные виды на экране, и у каждого есть разные UIGestureRecognizer
. Я хочу, чтобы я прикоснулся к одному виду и переместился в соседний вид, распознаватель жестов смежного вида начнет обнаруживать штрихи.Как вызвать несколько UIGestureRecognizers без поднятия пальца с экрана
Что происходит в данный момент, если я касаюсь одного взгляда и выхожу из рамки этого вида, распознаватель жеста начального вида будет продолжать принимать вызовы до touchChanged
, пока мой палец не будет поднят. И не имеет значения, если я изменю state
распознавателя жестов на .ended
, .failed
или .cancelled
, никакие другие распознаватели жестов не получат призывы к их методам touch
, пока мой палец не будет поднят.
Как я могу обеспечить распознавание распознавания жестов, когда касание находится в границах его вида и заканчивается, когда оно покидает их, без необходимости обрабатывать события касания от супервизора?
Вот обычай UIGestureRecognizer
я осуществил, чтобы сделать это:
class GestureRecognizer: UIGestureRecognizer, UIGestureRecognizerDelegate {
override init(target: Any?, action: Selector?) {
super.init(target: target, action: action)
delegate = self
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent) {
super.touchesBegan(touches, with: event)
state = .began
}
override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent) {
super.touchesMoved(touches, with: event)
if state == .began {state = .ended}
else {state = .began}
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return otherGestureRecognizer is GestureRecognizer
}
}
Я считаю, что мой метод делегата инкапсулирует вашу рекомендацию, и он не работает – shoe
, если вы жестируете объект, а не тип GestureRecognizer, тогда это не сработает. –
да, но они есть и он по-прежнему не работает – shoe