繁体   English   中英

将静态方法设置为Swift中UITapGestureRecognizer的操作

[英]Setting static method as action of UITapGestureRecognizer in Swift

我正在以静态方法编程创建一个UIView ,并希望添加UITapGestureRecognizer ,它将在我的Helper类中调用另一个静态方法。

Helper.swift

static func showLoadingPopUp(frame: CGRect) -> UIView {
  let transView = UIView.init(frame: frame!)       
  let tapGesture = UITapGestureRecognizer(target: self, action: "transViewTapped:")
  transView.addGestureRecognizer(tapGesture)
  return transView
}

static func transViewTapped(gesture: UITapGestureRecognizer) {
  print("Oh Tapped!!!")
}

但它最终会出现以下消息,可能是因为我的方法的静态特性。 另外Helper.swift是简单的swift类(不是UIViewUIViewController

错误:

无法识别的选择器+ [JaClassified.Helper transViewTapped:]

如果你的类不是NSObject的后代,你可能需要将static func桥接到Objective-C(因为旧式的Objective-C选择器适用于NSObject )。

因此,在您的情况下,您可以将Helper类声明为

class Helper: NSObject {
    ...
}

或者,你可以连接你transViewTapped:通过用前缀它的Objective-C @objc

@objc static func transViewTapped(gesture: UITapGestureRecognizer) {
    ...
}

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM