【发布时间】:2018-06-16 23:01:23
【问题描述】:
图像在按下时会向@objc C 函数发送一个动作:
let imageView = UIImageView()
imageView.tag = 3
imageView.isUserInteractionEnabled = true
imageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(ItemAction)))
imageView.image = UIImage(named: (itemDictionary[character.Equipment[imageView.tag]]!.image))
overlayView.addSubview(imageView)
这是应该调用的函数:
@objc func ItemAction(sender: UIImageView!) {
print(sender.tag)
print("Item pressed from sender ")
}
该函数运行,但在打印发件人标签时,我收到一条错误消息并且程序退出:
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[UITapGestureRecognizer 标记]: 无法识别的选择器发送到实例 0x600002b42a00'
使用 UIButton 的整个设置都有效。 如何在外部函数中读取 UIImageView 的标签?
【问题讨论】:
-
这个众所周知的错误意味着发件人是类
UITapGestureRecognizer的对象,而不是UIImageView的对象。在父类UIGestureRecognizer方法的文档中隐含地说:“@IBAction func myActionMethod() @IBAction func myActionMethod(_ sender: UIGestureRecognizer)”developer.apple.com/documentation/uikit/uigesturerecognizer
标签: swift uiimageview tags