我有一个函数可以创建一个以选择器函数为目标的按钮。按钮的地址被传递给handleSelectPhoto
.
lazy var image1Button = createButton(selector: #selector(handleSelectPhoto))
func createButton(selector: Selector) -> UIButton {
let button = UIButton(type: .system)
button.addTarget(self, action: selector, for: .touchUpInside)
return button
}
@objc func handleSelectPhoto(button: UIButton) {
// Do something with button, this works
}
现在,我正在尝试将上面的类从 UIButton 更改为 UIImageView ,如下所示,
lazy var image1Button = createButton(selector: #selector(handleSelectPhoto))
func createButton(selector: Selector) -> UIImageView {
let view = UIImageView()
view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: selector))
view.isUserInteractionEnabled = true
return view
}
@objc func handleSelectPhoto(button: UIImageView) {
// HERE, button does not get passed
}
通过上述更改,在handleSelectPhoto
, 按钮实例中不正确。我无法将其读取为 UIImageView 类型。
如果我使用 添加选择器函数,就选择器函数如何使用参数执行而言,addGestureRecognizer
它的行为是否与使用 添加选择器函数不同?addTarget
也许我不明白这个选择器功能是如何工作的......