【问题标题】:nextResponder in Swift 3Swift 3 中的 nextResponder
【发布时间】:2017-04-02 07:15:58
【问题描述】:
在 Swift 2 中,这段代码运行良好
override func nextResponder() -> UIResponder? {
// it's called when user make any touch event
return super.nextResponder()
}
它基本上有助于获得有关任何用户交互的通知。
现在在 Swift 3 中它是一个变量而不是一个函数,我什至不能用 didSet 观察它。
那么如何在 Swift 3 中使用上面的代码
【问题讨论】:
标签:
ios
swift
uiresponder
【解决方案1】:
nextResponder 在Swift 3 中被next 替换。它的新声明是:
var next: UIResponder? { get }
【解决方案2】:
您可以覆盖变量:
override var next: UIResponder? {
get {
// do something
return super.next
}
}
由于变量被定义为只读变量,实现didSet 没有意义。你不应该设置这个变量。相反,UIResponder 的不同子类可以覆盖该变量并返回不同的值。基类返回nil。
注意:该变量在 Swift 3 中称为 next,在 Objective-C 和更早的 Swift 版本中称为 nextResponder。当您在右栏中的 Swift 和 Objective-C 之间切换时,可以在 documentation 中看到这一点。