Swift 3 中的 nextResponder

nextResponder in Swift 3

在 Swift 2 这段代码工作正常

override func nextResponder() -> UIResponder? {
  // it's called when user make any touch event
  return super.nextResponder()
}

获取有关任何用户交互的通知基本上很有帮助。

在 Swift 3 现在它是一个变量而不是函数,我什至不能用 didSet 观察它。

那么如何在Swift3中使用上面的代码

您可以覆盖变量:

override var next: UIResponder? {
    get {
        // do something
        return super.next
    }
}

由于变量被定义为只读变量,实现didSet没有意义。你不应该设置这个变量。相反,UIResponder 的不同子class 可以覆盖变量和 return 不同的值。基础classreturnsnil.

注意:该变量在 Swift 3 中称为 next,在 Objective-C 和更早的 Swift 版本中称为 nextResponder。当您在 SwiftObjective-C 之间切换时,可以在 documentation 中看到右栏.

nextResponderSwift 3中被next代替。它的新声明是:

var next: UIResponder? { get }