目前我有2个类:ViewController和A类。我的目标是在A类的UIView中添加tap手势识别器。我的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
但它仍然无效,显示错误:无法识别的选择器发送到实例。删除该行会产生相同的错误。我可以知道这是否可行(从另一个类添加手势识别器)?如果是的话那我应该怎么做呢?
答案 0 :(得分:0)
在这一行
let tap = UITapGestureRecognizer(target: self.currView, action:#selector(tapDetected(_:)))
您说手势识别器可以搜索tapDetected()
对象中的self.currView
功能。尝试更改目标:
let tap = UITapGestureRecognizer(target: self, action:#selector(tapDetected(_:)))
是的,它应该是这样的:
tap.delegate = self
由于您的A
课程符合UIGestureRecognizerDelegate
。