我实施的3D Touch动态快速操作快捷方式存在一个非常简单的问题。
我想在应用程序终止时清除快捷方式(双击“主页”按钮并向上滑动)。
我打电话给UIApplication.sharedApplication().shortcutItems.removeAll()
如下:
func applicationWillTerminate(application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
// Saves changes in the application's managed object context before the application terminates.
UIApplication .sharedApplication().shortcutItems?.removeAll()
self.saveContext()
}
然而,它没有任何效果,并且在使用3D触控时仍会显示快速操作。
如果我将UIApplication.sharedApplication().shortcutItems?.removeAll()
放在里面
func applicationDidEnterBackground(application: UIApplication)
,这完全符合预期......
我读过一些关于applicationDidEnterBackground
在大多数情况下由于后台处理或其他原因而使用的功能......但是当用户使用app监视器终止应用程序时,必须有一种方法来实现我想要的功能向上滑动。
由于
答案 0 :(得分:0)
没有尝试过这个。但这个调整应该有效。 在applicationWillTerminate上启动后台任务,并在一些小延迟后结束它。与此同时,您可以调用' UIApplication .sharedApplication()。shortcutItems?.removeAll()'。 这有望清除快捷方式。
答案 1 :(得分:0)
有动态和静态快速操作。您通过UIApplication实例的shortcutItems属性定义的第一种类型(如您的示例中所示)。您在plist文件中注册的第二种。
您的代码会创建动态快速操作,并在运行时将它们与您的应用程序对象一起注册。
系统会在您安装应用时注册静态快速操作。
如果用户为您的应用安装了更新但尚未启动更新,请按主屏幕图标显示以前安装的版本的动态快速操作。
这意味着即使应用程序关闭,系统也会记住这两种快速操作。当您的应用程序在内存中时,例如在进入后台时,系统仍然可以查询UIApplication以获取动态操作,但是当应用程序关闭时,它必须保留一些其他类型的快速操作持久性。
我认为系统与动态快速操作同步的点无法保证。我的猜测是,关闭应用程序时系统不一定要同步,你的用例可能是不受支持的用例。