Как отключить один из нескольких распознавателей жестов? - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь отключить 1 из 3 распознавателей жестов, которые я добавил к представлению, кто-нибудь знает, какой правильный код?

Вот что у меня есть:

// the gesture recognizer i'm trying to disable

    let tap = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:)))
    myImageView1.addGestureRecognizer(tap)


// the code to disable it

    let allGRs = [currentView.gestureRecognizers]

    for g in allGRs {

        if let g as? UITapGestureRecognizer {
            g.isEnabled = false
        }

    }

Спасибо!

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Вы должны назначить свойство name вашему распознавателю жестов.

tap.name = "myTapGesture"

А позже вы можете циклически переключаться между рекогнитурами и отключать только тот, который вам нужен.

for aRecognizer in view.gestureRecognizers {
   if let name = aRecognizer.name {
       if name == "myTapGesture" {
           aRecognizer.isEnabled = false
       }
   }
}
0 голосов
/ 04 февраля 2019

Надеюсь, это поможет вам!

  1. Добавьте уникальное имя к вашему UITapGestureRecogniser

    let tapName = "100" //Any unique name
    func addGestureRecognisers() {
        let view = UIView() // Your view in your context. I just added to test my code
        let tap = UITapGestureRecognizer(target: self, action: action: #selector(self.handleTap(_:)))
        tap.name = tapName 
        view.addGestureRecognizer(tap)
    }
    
  2. Фильтр UITapGestureRecognisers, а затемОтфильтруйте результат по name.

    func disableTapGesture(from view: UIView) {
        view.gestureRecognizers?.filter({$0.name == tapName}).first?.isEnabled = false
    }
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...