如何检测通知中心是否已打开

4
在cocos2dx项目中,在iOS 10设备上,当下拉通知中心再向上滑动时,会出现巨大的帧率下降。结果就是,当动画恢复时,依赖于delta t的UI元素会移动到无效位置。在我看来,操作系统将应用程序放入某种后台模式,但是applicationDidEnterBackground没有被调用。有没有办法在下拉/上滑通知中心时接收事件?
1个回答

8
使用
applicationWillResignActive(_:)

上述委托在您的应用程序离开前台时被调用。当您的应用程序短暂失去焦点(例如接收电话等)时,也会调用此委托。
您可以使用
applicationWillEnterForeground(_:)

要确定您的应用程序何时重新获得焦点。

阅读:https://developer.apple.com/documentation/uikit/uiapplicationdelegate

由于这些代理是在应用程序的UIApplicationDelegate上调用的,通常是您的appDelegate文件,大多数情况下,您希望在单独的ViewControllers中收到这些事件的通知,而不是在AppDelegate中,您总是可以使用NotificationCenter并为UIApplicationWillResignActiveNotification添加观察器。

阅读:如何在“func applicationWillResignActive”中访问UIViewController的变量?Swift,iOS xcode


谢谢你的回答。所以在iOS10上,当通知中心被向下滑动时,applicationWillResignActive肯定会被调用? - Vahagn
@vahagn:从逻辑上讲,我认为在iOS 10中没有特别改变的地方。我已经使用了这些处理设备接收语音电话的情况。因此,在这种情况下也应该能够正常工作。 - Sandeep Bhandari
2
@vahagn:阅读此内容https://stackoverflow.com/questions/9060066/sleep-mode-vs-notification-center-open,其中明确提到在打开通知中心时将调用applicationWillResignActive。 - Sandeep Bhandari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接