SwiftのUILongPressGestureRecognizerは二回呼ばれる

swift programming

let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(ViewController.longPressedButton))
button.addGestureRecognizer(longPressRecognizer)

こんな感じで登録したlongPressedButton関数は二回呼ばれる。 アラートなど呼び出す時は二度呼ばれてしまうので注意が必要。 UIGestureRecognizerのstateで下記のように切り分ける。

@objc func longPressedButton(sender:UIGestureRecognizer) {

    if (sender.state == .began){
      print("長押し開始のタイミング")      
      /*
      何かアラート処理を書いたり
      */
    } else if (sender.state == .ended) {
      print("長押し終了のタイミング")      
    }
}