Swift - 无法识别的选择器到实例 - UITapGestureRecognizer
Posted
技术标签:
【中文标题】Swift - 无法识别的选择器到实例 - UITapGestureRecognizer【英文标题】:Swift - Unrecognized Selector to instance - UITapGestureRecognizer 【发布时间】:2021-01-25 15:52:40 【问题描述】:我正在尝试设置UITapGestureRecognizer
,但一直出现以下错误:
[projet.View tapA]:] 无法识别的选择器发送到实例地址
这是我的代码:
类视图:
class View: UIView
init(frame: CGRect, s: TimeInterval, position : CGPoint , size : CGSize)
let tap = UITapGestureRecognizer(target: self, action:
#selector(ViewController.tapA(sender:)))
tap.numberOfTapsRequired = 1
self.addGestureRecognizer(tap)
类视图控制器(UIViewController):
@objc func tapA (sender : UITapGestureRecognizer)
//For now :
print("Jump")
我还没有找到像这样的问题。 任何帮助将非常感激! 提前谢谢你。
【问题讨论】:
该方法在ViewController
中,所以它是实现该方法的ViewController
的一个实例。但是你做了UITapGestureRecognizer(target: self
,所以目标是self
,视图的实例itself
。由于它不知道该方法,因此它会因该错误消息而崩溃。
你不能使用直接选择器。检查这个:***.com/a/65736298/14733292
【参考方案1】:
不要在ViewController
类中创建选择器,而是在View
类中创建它
并将视图控制器的实例传递给它,然后在选择器中执行代码
ViewController
:
查看
class View: UIView
var viewController: ViewController!
init(frame: CGRect, s: TimeInterval, position : CGPoint , size : CGSize)
let tap = UITapGestureRecognizer(target: self, action: #selector(tapA(_:)))
tap.numberOfTapsRequired = 1
self.addGestureRecognizer(tap)
@objc
private func tapA(_ sender: UITapGestureRecognizer)
guard let vc = viewController as? ViewController else return
vc.execTapA()
视图控制器
func execTapA()
// Execute the code you need
要将ViewController
的引用传递给只需调用的视图,请在您的ViewController
的viewDidLoad
方法中:
view.viewController = self
【讨论】:
以上是关于Swift - 无法识别的选择器到实例 - UITapGestureRecognizer的主要内容,如果未能解决你的问题,请参考以下文章