【问题标题】: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】:

    nextResponderSwift 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。当您在右栏中的 SwiftObjective-C 之间切换时,可以在 documentation 中看到这一点。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-18
        • 2017-07-26
        • 2017-02-13
        • 2017-04-09
        相关资源
        最近更新 更多