Не получен Центр уведомлений Observer Swift

Здесь я создал customView: UIView и реализовал UITextField didBegin и didEndnotificationObservers.

Когда объект установлен как ноль. Я получаю инициированное уведомление Observed(_:)

Но когда я передаю (object: self) я не получил уведомлениеObserved.

class CustomView: UIView {
  func setupView() {

        [UITextField.textDidBeginEditingNotification,
         UITextField.textDidEndEditingNotification].forEach({

            NotificationCenter.default.addObserver(self, selector: #selector(notificationObserved(_:)), name: $0, object: self)
         })
    }

 @objc func notificationObserved(_ notified: Notification) {

        switch notified.name {
        case UITextField.textDidBeginEditingNotification:
                // Do here

        case UITextField.textDidEndEditingNotification:
               // Do here
        default:
            break
        }
    }
}

person Kathiresan Murugan    schedule 16.06.2020    source источник


Ответы (1)


Это на самом деле ожидаемое поведение. Параметр object в методе addObserver(_,selector:,name:,object:) указан в документации для разработчиков (здесь), "Объект, который отправляет уведомления наблюдателю".

Поскольку объект, отправляющий уведомление, является UITextField, а не экземпляром вашего класса CustomView, вы никогда не получите уведомление, если передадите self в параметре object.

Передача nil означает, что независимо от отправителя вы всегда хотите получать уведомления.

person OscarVGG    schedule 16.06.2020