iOS开发课程:通知
什么是通知中心? 如何观察键盘的出现? 如何创建自己的通知?
让我们看看如何在iOS中使用通知。
对象在通知中心注册,以使用addObserver(_:selector:name:object:)
或addObserver(forName:object:queue:using:)
方法接收通知( NSNotification
对象)。 当对象将自己添加为观察者时,它指定应接收的通知。 因此,对象可能会多次调用此方法,以便将自己注册为多个不同通知的观察者。
每个正在运行的应用程序都有一个default
通知中心,您可以创建新的通知中心来组织特定上下文中的通信。
通知中心只能在单个程序中传递通知; 如果要向其他进程发布通知或从其他进程接收通知,请改用DistributedNotificationCenter
。
阅读有关Apple Developer的更多信息
让我们创建Single View操场并添加第一个观察者。
该代码有什么作用?
- 将自身(MyViewController)实例设置为观察者
- 将私有函数appDidBecomeActive定义为观察者配置的选择器
- appDidBecomeActive每次您的应用程序变为活动状态时运行
在通知部分阅读更多
好吧,让我们成为键盘观察者。
将Playground代码更改为以下代码。
- 运行游乐场。
- 点按到textField
- 查看控制台输出:
- 点按按钮
- 查看控制台输出:
因此,现在我们有了两个对象的通知对象,其中都包含有关键盘矩形的信息。
我们还能做些什么? 尝试为UIApplication.keyboardDidShowNotification和UIApplication.keyboardDidHideNotification添加观察器功能,并在控制台中查看区别。
通知包含名称,对象和可选字典,并由NotificationCenter
或DistributedNotificationCenter
实例广播到该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网站上了解更多信息。 不要停止自我教育。
订阅我的帐户以获取有关新故事的通知。
如果您还有问题,请在评论中写。 我将在以后的文章中回答。