следующийОтветчик в Swift 3

в Swift 2 этот код отлично работает

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

это в основном помогает получать уведомления о любом взаимодействии с пользователем.

в Swift 3 теперь это переменная, а не функция, и я даже не могу наблюдать за ней с помощью didSet.

так как использовать код выше в Swift 3


person iOSGeek    schedule 18.11.2016    source источник


Ответы (2)


Вы можете переопределить переменную:

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

Поскольку переменная определена как переменная только для чтения, реализация didSet не имеет смысла. Вы не должны устанавливать эту переменную. Вместо этого разные подклассы UIResponder могут переопределять переменную и возвращать разные значения. Базовый класс возвращает nil.

Примечание. Переменная называется next в Swift 3 и nextResponder в Objective-C и более ранних версиях Swift. Это можно увидеть в документации при переключении между Swift и Objective-C в правом столбце.

person Codo    schedule 18.11.2016

nextResponder заменяется на next в Swift 3. Его новая декларация:

var next: UIResponder? { get }
person Munahil    schedule 18.11.2016