【发布时间】:2019-02-26 09:21:01
【问题描述】:
我有一个函数可以创建一个以选择器函数为目标的按钮。按钮的地址被传递给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 添加选择器函数不同?也许我不明白这个选择器功能是如何工作的......
【问题讨论】:
标签: swift uigesturerecognizer selector addtarget