iOS开发课程:通知

什么是通知中心? 如何观察键盘的出现? 如何创建自己的通知?

让我们看看如何在iOS中使用通知。


对象在通知中心注册,以使用addObserver(_:selector:name:object:)addObserver(forName:object:queue:using:)方法接收通知( NSNotification对象)。 当对象将自己添加为观察者时,它指定应接收的通知。 因此,对象可能会多次调用此方法,以便将自己注册为多个不同通知的观察者。

每个正在运行的应用程序都有一个default通知中心,您可以创建新的通知中心来组织特定上下文中的通信。

通知中心只能在单个程序中传递通知; 如果要向其他进程发布通知或从其他进程接收通知,请改用DistributedNotificationCenter

阅读有关Apple Developer的更多信息

让我们创建Single View操场并添加第一个观察者。

NotificationCenter addObserver

该代码有什么作用?

  • 将自身(MyViewController)实例设置为观察者
  • 将私有函数appDidBecomeActive定义为观察者配置的选择器
  • appDidBecomeActive每次您的应用程序变为活动状态时运行
    在通知部分阅读更多

好吧,让我们成为键盘观察者。

将Playground代码更改为以下代码。

键盘观察
  • 运行游乐场。
  • 点按到textField
  • 查看控制台输出:
键盘将显示
  • 点按按钮
  • 查看控制台输出:
键盘会隐藏

因此,现在我们有了两个对象的通知对象,其中都包含有关键盘矩形的信息。
我们还能做些什么? 尝试为UIApplication.keyboardDidShowNotificationUIApplication.keyboardDidHideNotification添加观察器功能,并在控制台中查看区别。


通知包含名称,对象和可选字典,并由NotificationCenterDistributedNotificationCenter实例广播到该NotificationCenter 。 名称是标识通知的标签。 该对象是通知的发布者想要发送给该通知的观察者的任何对象(通常是发布通知的对象)。 词典存储其他相关对象(如果有)。 NSNotification对象是不可变的。

通常,您通常不直接创建自己的通知,而是调用NotificationCenter方法post(name:object:)post(name:object:userInfo:)

重要

基金会框架的Swift覆盖层提供了Notification结构,该结构与NSNotification类桥接。 有关值类型的更多信息,请参阅结合使用Swift和Cocoa和Objective-C(Swift 4.1)中的Cocoa框架。

阅读有关Apple Developer的更多信息

让我们看看如何创建一个新的通知名称并在项目中使用它。

将Playground代码更改为以下代码。

  • 跑操场
  • 点按按钮
  • 查看结果-UITextField现在是“第一响应者”。
    但是,停下来-它是如何工作的? 查看设置观察部分。
    textField属性在自定义通知ButtonDidTap上订阅,并且在收到来自中心的通知时成为firstResponder选择器。

你完成了! 拍! 拍!

接下来是什么? 尝试在应用程序中使用观察器键盘。 将所有控件移到顶部。 不要将它们隐藏在键盘下。 继续使用 NotificationQueue并尝试了解DistributedNotificationCenter。

请记住,成功的秘诀是不断学习和与同事沟通,包括自我教育。

这是有关通知的小指南。 在Apple Developer网站上了解更多信息。 不要停止自我教育。

订阅我的帐户以获取有关新故事的通知。

如果您还有问题,请在评论中写。 我将在以后的文章中回答。