は現在、私は2つのクラスを持っている:のViewControllerとクラスA.私の目標は、クラスAからのUIViewに私のViewControllerタップジェスチャー認識を追加することです:別のファイルからタップジェスチャー認識を追加
class ViewController {
@IBOutlet var area: UIView!
func enterClassA() {
let classA = A(self.area)
//some processing
}
}
class A : UIGestureRecognizerDelegate {
private var currView: UIView!
init(newView: UIView) {
self.currView = newView
self.addTapGesture()
}
func addTapGesture() {
let tap = UITapGestureRecognizer(target: self.currView, action:#selector(tapDetected(_:)))
tap.delegate = self.currView as! UIGestureRecognizerdelegate? //***
self.currView.addGestureRecognizer(tap)
}
@objc func tapDetected(_ tapGesture: UIGesturerecognizer) {
print ("Tap detected!")
}
}
をしかし、今、それは与えていますエラー:タイプ 'UIView'の値を「UIGestureRecognizerDelegate」にキャストできませんでした。私は行***を修正しようとしました
tap.delegate = self
しかし、それはまだ動作していない、エラーを表示しています:認識できないセレクターがインスタンスに送信されました。行を削除すると同じエラーが発生します。これが実行可能であるかどうかを知ることができますか(別のクラスのジェスチャ認識プログラムを追加する)?もしそうなら、私はそれにどのように接近すべきですか?