2017-07-21 5 views
0

私はSwift 3の新機能です。現在、私はUIBarButtonItemを持っています。このボタンアクションを複数回押した場合にのみトリガーされるようにする方法は?たとえば、ViewControllerは、ユーザーがこのボタンを2回押したときにのみ表示されます。複数回押した場合にのみボタンアクションをトリガする方法は?

+0

あなたのUIBarButtonItemにUITapGestureRecognizerを追加 – Nilesh

答えて

0

あなたのUIBarButtonItemに下記のように UITapGestureRecognizerを追加するだけです。

func addBarButton() -> UIBarButtonItem 
{ 
     let btnImage = UIImage(named: "imageName")! 
     let imageButton : UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 25, height: 25)) 
     imageButton.setBackgroundImage(btnImage, for: UIControlState()) 

     let doubleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.buttonAction(_:))) 
     doubleTap.numberOfTapsRequired = 2 
     imageButton.addGestureRecognizer(doubleTap) 

     return UIBarButtonItem(customView: imageButton) 
} 

あなたのviewDidLoad関数からの蛇行線を呼び出します。

navigationItem.rightBarButtonItems = [addBarButton()] 
1

UIBarButtonItemためのカスタムビューを作成し、サンプル・コード、カスタムビューのUITapGestureRecognizerを追加し、2

としてnumberOfTapsRequiredプロパティの値を設定します。代わりにUIBarButtonItemの

class viewController: UIViewController { 

     var doubleTapGesture: UITapGestureRecognizer! 
     var barButton: UIBarButtonItem! 
     var button: UIButton! 

     override func viewDidLoad() { 
      super.viewDidLoad() 

      button = UIButton(type: .custom) 
      button.setTitle("title", for: .normal) 
      button.frame = CGRect(x: 0, y: 0, width: 64, height: 30) 

      doubleTapGesture = UITapGestureRecognizer(target: self, action: #selector(viewController.buttonClicked)) 
      doubleTapGesture.numberOfTapsRequired = 2 

      button.addGestureRecognizer(doubleTapGesture) 

      barButton = UIBarButtonItem(customView: button); 
      navigationItem.rightBarButtonItem = barButton 
     } 

     func buttonClicked() { 
      // Method for UITapGestureRecognizer 
     } 
    } 
1

使用UIButtonをと定義しますその中の "Touch Up Inside"の代わりに "Touch Down Repeat"イベントがあります。 ボタンをダブルタップすると、タッチダウンリピートトリガーが表示されます。

参照

用画像下のチェック

enter image description here

関連する問題