前提・実現したいこと
ボタンを長押しすると、UIAlertControllerが表示され、OKを押すと削除できる機能を目標としている。
該当のソースコード
//ボタンに長押しした時の処理を設定 let button = UIButton(type: .system) let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(deleteTag(_:))) button.addGestureRecognizer(longPressRecognizer) @objc func deleteTag(_ sender: UIButton) { print(#function) let alert = UIAlertController(title: "削除しますか?", message: nil, preferredStyle: .alert) alert.addAction(.init(title: "OK", style: .default, handler: { (_) in //ボタン削除処理 (省略) })) alert.addAction(.init(title: "CANCEL", style: .cancel, handler: nil)) self.present(alert, animated: true, completion: nil) }
発生している問題・エラーメッセージ
deleteTag(_:) deleteTag(_:) deleteTag(_:) deleteTag(_:) ... 続く... //長押し後の処理が複数回呼ばれてしまうことで、「UIAlertControllerが表示されすぎです」という旨のエラーが出る。
試したこと
長押し後に、何度も処理が呼ばれず、一回だけ処理を行うことは可能でしょうか。
もしくは、どこかコードを間違えているのでしょうか。ご指摘お願いいたします。
以下を参考に、ボタンの長押し処理を作成しました。
https://otiai10.hatenablog.com/entry/2019/08/08/115240
補足情報(FW/ツールのバージョンなど)
xcode10.3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/19 09:43