2017-02-09 2 views
3

У меня есть смежные виды на экране, и у каждого есть разные 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 
    } 
} 

ответ

0

Вы можете сделать это, просто написать этот метод делегата в контроллере, и возвращает истину.

прочитайте это один раз. https://developer.apple.com/reference/uikit/uigesturerecognizerdelegate/1624208-gesturerecognizer

+0

Я считаю, что мой метод делегата инкапсулирует вашу рекомендацию, и он не работает – shoe

+0

, если вы жестируете объект, а не тип GestureRecognizer, тогда это не сработает. –

+0

да, но они есть и он по-прежнему не работает – shoe

Смежные вопросы