Swift 3中的nextResponder

时间:2016-11-18 12:22:38

标签: ios swift uiresponder

在Swift 2中

这段代码工作正常

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

它基本上有助于获得有关任何用户互动的通知。

现在,在Swift 3中它是一个变量而不是函数,我甚至无法用didSet观察它。

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

2 个答案:

答案 0 :(得分:5)

您可以覆盖变量:

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

由于变量被定义为只读变量,因此实现didSet没有意义。你不应该设置这个变量。相反,UIResponder的不同子类可以覆盖变量并返回不同的值。基类返回nil

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

答案 1 :(得分:0)

nextResponder已被next中的Swift 3取代。它的新声明是:

var next: UIResponder? { get }