2016-11-07 6 views
0

ロングプレスを無効にするにはどうすればよいですか?ロングプレスを無効にする

私はviewcontrollerにlongpressを設定しましたが、うまくいきましたが、別のボタンを押した後に作業を停止したいと思います。

私はフラグを追加し、私はボタンBを押し、長押しはこのようworkingm停止するよりも後にfalseに設定することができます

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をドラッグします。そのプロパティでisEnabledをfalseに設定します。 –

関連する問題