Ios 添加调用另一类中函数的点击手势

Ios 添加调用另一类中函数的点击手势,ios,swift,uitapgesturerecognizer,Ios,Swift,Uitapgesturerecognizer,我向元素添加了一个uitappesturerecognizer。我希望在识别出点击手势后调用的函数在另一个类中 这是我的代码: let selectMoment = SelectMomentClass(countUserMoment: 1, cardView: self.cardView) selectMoment.draw() let gesture = UITapGestureRecognizer(target: self, action: #selector(selectMoment.se

我向元素添加了一个
uitappesturerecognizer
。我希望在识别出点击手势后调用的函数在另一个类中

这是我的代码:

let selectMoment = SelectMomentClass(countUserMoment: 1, cardView: self.cardView)
selectMoment.draw()
let gesture = UITapGestureRecognizer(target: self, action: #selector(selectMoment.selectMomentAction))
cardView.addGestureRecognizer(gesture)
我的
SelectMomentClass
包含我的功能:

@objc func selectMomentAction(sender : UITapGestureRecognizer) {
    print("card selectMoment is Tapped")
}
但是,当我运行代码时,出现了以下错误:

已将无法识别的选择器发送到实例

我的代码哪里出错了?这是我需要更改的目标参数。我可以调用另一个类中的函数吗



我在Objective-C中发现了一个类似的变量,但它对我没有帮助。

因为对象是一个局部变量,它在函数结束后被释放,所以将其作为类中的实例变量

let selectMoment = SelectMomentClass(countUserMoment: 1, cardView: self.cardView)

使用此选项。您的方法在
selectMomentClass
class中定义,然后您必须添加目标 作为
selectMomentClass
对象和选择器作为
#选择器(selectMoment.SelectPictureAction)

方法签名,如下所示,在selectMomentClass中

@objc func selectPictureAction(_ sender : UITapGestureRecognizer) {
        print("card selectMoment is Tapped")
}

感谢您的回复,这将修复错误消息,但不会显示消息“card selectMoment is Tapped”因此,我认为该函数再次未被调用。您有2个对象集selectMoment和selectPicture您想要哪一个?是的,我编辑帖子我只有一个对象selectMomentcardView是UIView或UIImageView?UIView因此
isUserInteractionEnabled
设置为true,如果卡的子视图或子视图出现问题,则不会出现错误其他..谢谢,但同样的问题。。。这很奇怪,我没有任何登录名,您正在哪个类创建这个SelectMomentClass对象?在
类CardCell:UITableViewCell
哪里可以获得self.cardView?问题解决了,我把let selectMoment移到了一个实例变量中,结果很好!你能取消否决票吗?我几乎谈到了关于手势识别器不是“正常”链的一部分的应答器链和文档,但随后我点击了你发布的链接,发现你没有发布任何与这部分答案相关的内容。(这可能对您没有帮助,但会帮助我们帮助您。)“但您需要目标类(将在其中执行方法的类)的实例作为委托或手势添加类中的某些内容。”是否
SelectMomentClass
是具有tap识别器的类的委托?如果是这样,请查看响应者链-您可以为
uigesturecognizer
@dfd做些什么谢谢您的评论,我解决了我的问题,将我的
SelectMomentClass
声明为一个实例变量
@objc func selectPictureAction(_ sender : UITapGestureRecognizer) {
        print("card selectMoment is Tapped")
}