我在静态方法中以编程方式创建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
是简单的快速课程(不是UIView
或UIViewController
)
错误:
无法识别的选择器+ [JaClassified.Helper transViewTapped:]
答案 0 :(得分:2)
如果您的班级不是NSObject
的后代,您可能需要将static func
桥接到Objective-C(因为旧式Objective-C选择器适用于NSObject
s)。
因此,在您的情况下,您可以将Helper
类声明为
class Helper: NSObject {
...
}
或者,您可以通过在transViewTapped:
@objc
与Objective-C的桥接
@objc static func transViewTapped(gesture: UITapGestureRecognizer) {
...
}
希望它有所帮助。