UITapGestureRecognizer静态方法崩溃

时间:2018-07-05 14:19:08

标签: ios swift uicollectionviewcell uitapgesturerecognizer

我有一个包含多个自定义UICollectionViewCell的快捷应用程序。所有单元格都有用户可以点击的多个对象(UIImageViewUILabel)(因此,我使用多个UITapGestureRecognizer来调用相应的动作。作业并减少代码的重复性,我想用extension方法创建一个UITapGestureRecognizer的{​​{1}},可以直接在类上调用。

我做到了,但是应用程序崩溃的事实意味着有些事情我做得不好。这是我的代码:

static

控制台错误说:

  

由于未捕获的异常而终止应用程序   'NSInvalidArgumentException',原因:'+ [UITapGestureRecognizer   likeImageTapped]:无法识别的选择器已发送给类0x1b52e4c50'

2 个答案:

答案 0 :(得分:5)

问题似乎在这里: let tap = UITapGestureRecognizer(target: self, action: selectorName)

目标不是self,它是UICollectionViewCell的实例。

将代码更改为:

static func addNewTapGuestureRecognizer(for imageView: UIImageView, target: Any, selectorName: Selector) {
    let tap = UITapGestureRecognizer(target: target, action: selectorName)
    imageView.addGestureRecognizer(tap)
    imageView.isUserInteractionEnabled = true
}

答案 1 :(得分:2)

问题出在目标上,所以替换掉它

 static func addNewTapGuestureRecognizer(for imageView: UIImageView, selectorName: Selector) {

static func addNewTapGuestureRecognizer(for imageView: UIImageView, selectorName: Selector , myTarget:UICollectionViewCell) {

     let tap = UITapGestureRecognizer(target: myTarget, action: selectorName)


 }
相关问题