UITapGesture
をUIButtonに追加して、タップしたときに関数がトリガーされるようにします。私はSwift 3
を使用していますが、いくつかのエラーが発生しています:
キャッチされない例外 'NSInvalidArgumentException'によるアプリの終了、理由: '-[SwiftRunner.ViewController tapBlurButton]:認識されないセレクターがインスタンス0x149e07610に送信されました
これはおおよそ私が持っているものです:
// Swift 3
import UIKit
class ViewController {
@IBOutlet weak var qsBlurButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
let tapGesture = UITapGestureRecognizer(target: self, action: Selector(("tapBlurButton")))
qsBlurButton.addGestureRecognizer(tapGesture)
}
func tapBlurButton(sender: UITapGestureRecognizer) {
print("Please Help!")
}
}
コードからSwift 3.0を使用しているので、selector
構文を次のように変更します
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapBlurButton(_:)))
そしてこのようなあなたの機能
func tapBlurButton(_ sender: UITapGestureRecognizer) {
print("Please Help!")
}
編集:
タップジェスチャーでボタンを使用しているという考えではなく、ボタンに組み込みメソッドaddTarget
を使用する代わりに、このようにタップジェスチャーを作成する必要はありません
qsBlurButton.addTarget(self, action: #selector(self.tapBlurButton(_:)), forControlEvents: .TouchUpInside)
func tapBlurButton(_ sender: UIButton) {
print("Please Help!")
}
Swift
セレクターのfunc
が次のような場合(注:_がありません):
func tapBlurButton(sender: UITapGestureRecognizer) {
print("Please Help!")
}
セレクターは次のようになります。
#selector(self.tapBlurButton(sender:))
セレクターの最終的なコードは次のとおりです。
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapBlurButton(sender:)))
最初のパラメーターに_
を指定しない場合、最初のパラメーターのフルネームを使用する必要があります。
ジェスチャレコグナイザーを追加するには、どの機能を呼び出すかを示すものを作成する必要があります。
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTapFrom(recognizer:)))
次に、必要な要素に追加します。 (あなたはボタンを使用していますが、他の人が説明したように、ボタンにはネイティブの「addTarget」メソッドがあります)
説明のために、UIViewに追加したいとします。
self.someView.addGestureRecognizer(tapGestureRecognizer)
また、一部の要素はデフォルトで「ユーザーインタラクティブではない」ことを忘れないでください。そのため、そのプロパティも変更する必要があります。
self.someView.isUserInteractionEnabled = true
Swift 4では、関数には@objc宣言が必要です。
@objc func handleTapFrom(recognizer : UITapGestureRecognizer)
{
// Some code...
}