没有收到通知中心观察员 Swift

Posted

技术标签:

【中文标题】没有收到通知中心观察员 Swift【英文标题】:Didn't receive Notification Center Observer Swift 【发布时间】:2020-06-16 16:23:55 【问题描述】:

在这里我创建了一个 customView: UIView 并实现了 UITextField didBegin 和 didEnd notificationObservers

当设置对象为零时。 我被触发了 notificationObserved(_:)

但是当我传递一个 (object: self) 我没有收到 notificationObserved。

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
        
    

【问题讨论】:

【参考方案1】:

这实际上是预期的行为。 addObserver(_,selector:,name:,object:) 方法中的参数object 是,如developer documentation (here) 中所述,“向观察者发送通知的对象”。

由于发送通知的对象是UITextField,而不是您的类的实例CustomView,因此当您在object 参数中传递self 时,您将永远不会收到通知。

传递nil表示无论发件人,你总是希望收到通知。

【讨论】:

以上是关于没有收到通知中心观察员 Swift的主要内容,如果未能解决你的问题,请参考以下文章

收到来自 Firebase 的推送通知 ios 但没有声音或在通知中心

如何从通知中心 Swift 中删除特定的推送通知

iOS通知中心

当应用程序进入后台和前台时,带有通知中心的登录屏幕,Swift

iOS设计模式2 - 观察者模式_通知机制

观察者模式