添加在另一个 class 中调用函数的点击手势

Adding tap Gesture that calls a function in another class

我在元素中添加了 UITapGestureRecognizer。我希望在识别点击手势后调用的函数在另一个 class.

这是我的代码:

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")
}

但是当我 运行 代码时我有这个错误:

unrecognized selector sent to instance

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


我在 Objective-C 中找到了类似的 question,但它对我没有帮助。

因为对象是一个局部变量,它在函数结束后被释放,所以让它成为它的实例变量 class

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

使用this.Your 方法定义在selectMomentClass class 然后你必须添加目标 作为 selectMomentClass 对象和选择器作为 #selector(selectMoment.SelectPictureAction).

let selectMoment = SelectMomentClass(countUserMoment: 1, cardView: self.cardView)
let gesture = UITapGestureRecognizer(target: selectMoment, action: #selector(selectMoment.SelectPictureAction(_:)))

方法签名如下 在 selectMomentClass.

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