问题标签 [notificationcenter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
5023 浏览

ios - swift 3中使用NotificationCenter添加观察者

我知道 NotificationCenter 已更改,并且我已使用此链接查找如何将其更改为新的实现: NotificationCenter issue on Swift 3,但我仍然无法让我的工作!我正在使用课堂教科书在课堂上做作业,到目前为止这是我的课:

毕竟这一切我仍然得到一个错误:

“模块“持久性”没有名为“applicationWillResignActive”的成员”

请帮忙!

0 投票
1 回答
571 浏览

swift - 如何在 Swift 中创建设置对象

我正在尝试在 Swift-3 中创建一个对象,该对象将包含各种基本的用户设置,可以在整个应用程序中轻松访问。我目前将此设置作为一个名为PTSettings. 它是这样实现的:

可以在应用程序周围轻松访问,如下所示:PTSettings.aUserSetting = "Foo"

我在这里苦苦挣扎的是,我希望这个结构能够观察来自NotificationCenter. 当一个屏幕连接PTSettings初始化外部屏幕,分配一个视图给它,显示一个横幅让用户知道等等......

我熟悉在 UIViewController 上完成所有这些任务;但是我不擅长使用结构。我的希望是,当应用程序加载时,结构将被初始化,并且 init 将被观察NotificationCenter,同时还检查在应用程序加载之前是否连接了屏幕。

以下是我目前拥有的。

编译器抱怨在方法中每次添加观察者,init()如下所示:

'#selector' 的参数是指未暴露给 Objective-C 的静态方法 'handleScreenDidConnectNotification(notification:)'

但是,@objc在方法之前添加时,它会抱怨:

@objc 只能与类的成员、@objc 协议和类的具体扩展一起使用。

我怎样才能达到预期的结果,我是否完全不采用这种方法?

0 投票
1 回答
2018 浏览

ios - Swift 3 中的 NotificationCenter 崩溃

只是我,还是NotificationCenter在 Swift 3 中变得一团糟?:)

我有以下设置:

在我的第一个视图控制器中,这很好用:

但是这个视图控制器:

...崩溃:

[NSConcreteNotification 长度]:发送到实例的无法识别的选择器

据我所知,我的观察者设置正确。知道我做错了什么吗?

0 投票
0 回答
774 浏览

ios - iOS 10:有键盘会显示通知,但键盘不在屏幕上

我有一个处理UIKeyboardWillShow通知的功能。但是发生的情况是,当我从那个特定的视图控制器转移到另一个视图控制器然后回来时,如果键盘仍然在屏幕上,然后它再次调用该函数,即使它不再在屏幕上并在控制台中显示:“有键盘会显示通知,但键盘不在屏幕上。” 但是,如果我在初始视图控制器中隐藏键盘,然后继续并返回,则不会按预期调用该函数。我试过resignFirstResponder()了,viewWillDisappear()但它仍然会发生。任何帮助,将不胜感激!

0 投票
5 回答
673 浏览

objective-c - 无法识别的选择器通知中心 Swift 3

我已经阅读了有关堆栈溢出的所有可能解决方案,但没有一个适合我。

我的代码是

在另一堂课上,我有:

选择器的所有语法都不起作用

我试过了:

可能还有其他十个选项。谁能帮我?

0 投票
1 回答
541 浏览

swift - 调试时来自 NotificationCenter 的通知

我如何确保NotificationCenter中的观察者只被调用一次 - 特别是当应用程序崩溃/必须由 Xcode 停止时?

假设我想打印通知NSNotification.WhatHaveYou

哪个工作正常。

苹果在其文档中NotificationCenter.default.addObserver(forName:, object:, queue:, using:)声明:

收到通知时要执行的块。

该块由通知中心复制并保留(副本)直到观察者注册被删除。

但是我怎样才能使这个观察者注册被删除,以便下一个应用程序启动时没有注册进一步的通知?

尤其是当应用程序崩溃或我通过 Xcode 停止应用程序时,观察者不会被删除,因此通知将显示多次 - 更准确地说:lastNumberOfOccurences = lastNumberOfOccurences +1

如何正确处理?

更新

到目前为止,我找到了这些资源

0 投票
1 回答
984 浏览

swift - 选择器为静态方法时如何设置NotificationCenter的观察者

此功能需要观察者是某个对象,但同时将静态方法设置为选择器。

This answer explains how to set selector and observer when the selector is an instance method .

0 投票
1 回答
1838 浏览

ios - 如何仅在 applicationDidBecomeActive 中触发“通知中心或控制中心”时检查

众所周知,当我们打开和关闭底部控制中心/顶部通知中心时,applicationDidBecomeActive 会调用。

但是我想知道在 applicationDidBecomeActive 中仅因为这两个事件,当用户打开和关闭通知中心或控制中心时处理一些功能。

任何人帮助我找出

由于通知中心而调用了 DidBecomeActive 的代码

由于控制中心而调用了 DidBecomeActive 的代码

0 投票
1 回答
1909 浏览

ios - NotificationCenter swift3无法观察帖子

我有 3 个通知:

我在视图控制器中为每个帖子都有一个不同的观察者

首先NotificationCenter.default.addObserver(forName:NSNotification.Name("Notification1"), object: nil, queue: nil, using: updateUx)

第二NotificationCenter.default.addObserver(forName:NSNotification.Name("Notification2"), object: nil, queue: nil, using: updateUx)

第三NotificationCenter.default.addObserver(forName:NSNotification.Name("Notification3"), object: nil, queue: nil, using: updateUx)

updateUx 函数仅包含通知的打印。

我只收到了我的第一个通知,我无法抓住另外两个,我不知道为什么。

0 投票
1 回答
220 浏览

ios - 如何在清除应用程序而不是启动应用程序后从应用程序中删除徽章通知

我有一个应用程序,当用户有一段时间没有访问该应用程序时,它会显示一个通知图标,我可以在启动应用程序时清除它,但我希望在他们从手机通知中滑动清除时清除它。我打开应用程序时用来清除的代码是

我今天刚开始使用 swift 来帮助同事完成他们的项目。如果有人能指出我正确的方向,至少将不胜感激。