2016-11-07 7 views
0

Как отключить длинный переход?Отключить longpress

Я установил longpress в viewcontroller, и он работает нормально, но я бы хотел, чтобы он прекратил работу после того, как я нажму другую кнопку.

я могу добавить флаг и установить его на ложь после того, как нажать кнопку B и чем длительное нажатие останавливает workingm так:

func longpress(gestureRecognizer: UIGestureRecognizer) { 
    if flag = true { 
     // action 
    } 
} 

Но я думаю, что это не правильный путь. ТАК, Каков правильный способ сделать это?

ответ

4

Вам необходимо посмотреть на суперкласс UILongPressGestureRecognizer, UIGestureRecognizer. Он имеет свойство isEnabled, которое может использоваться, чтобы отключить распознавание и снова включить его.

EDIT: добавить код примера ниже по запросу стендовых

import UIKit 

    class ViewController: UIViewController{ 

     @IBOutlet weak var button: UIButton! 
     private var longPressGestureRecognizer:UILongPressGestureRecognizer! 

     override func viewDidLoad() { 
      super.viewDidLoad() 
      longPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longPress)) 
      longPressGestureRecognizer.minimumPressDuration = 1 
      button.addGestureRecognizer(longPressGestureRecognizer) 
     } 

     @objc private func longPress (longPressGestureRecognizer: UILongPressGestureRecognizer) { 
      if longPressGestureRecognizer.state == .began { 
       print("long press began") 
      } 
     } 

     @IBAction func tapDisableButton(_ sender: Any) { 
      longPressGestureRecognizer.isEnabled = !longPressGestureRecognizer.isEnabled 
      print("long press \(longPressGestureRecognizer.isEnabled ? "enabled" : "disabled")") 
     } 
    } 
+0

Вы избили меня к нему. (Проголосовал.) Легко забыть проверить суперкласс класса. Часто то, что вам нужно, еще больше скрывает иерархию классов. –

+0

Да, но как я могу установить его, скажем: UILongPress.isenable = false изнутри кнопки? Поскольку этот UILongPress является неразрешенным идентификатором .... –

+0

Вам нужно иметь ссылку на экземпляр. Когда вы создаете UILongPressGestureRecognizer, сохраните его копию в свойстве на контроллере представления или создадите его в построителе интерфейса, перетащите IBOutlet. Set isEnabled - false для этого свойства. –

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