我正在我的应用程序中实现3D触摸快速操作,但是我遇到以下问题: 当应用程序已经在运行,因此可以通过对快捷方式项执行操作来启动快速操作时,它可以很好地工作。但是,当应用程序被杀死然后通过快速操作启动时(FinishLaunchingWithOptions也是如此),它并没有带我到所需的视图控制器,而是带到应用程序的主屏幕。
这是我的代码:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
//... other stuff I'm doing
if let shortcutItem = launchOptions?[UIApplication.LaunchOptionsKey.shortcutItem] as? UIApplicationShortcutItem {
shortcutItemToProcess = shortcutItem
}
return true
注意:我已经阅读了之前的SO答案,他们说,当通过快速操作启动应用程序时,我需要在didFinishLaunchingWithOptions中返回false,从而不会调用performAction。但是,由于我在那里处理的其他事情,我需要在我的didFinishLaunching方法中始终返回true。但是,我尝试返回false只是为了查看是否导致问题,并且应用程序的行为仍然相同。
func application(_ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, completionHandler: @escaping (Bool) -> Void) {
shortcutItemToProcess = shortcutItem
}
这是我呈现视图控制器的方式:
func applicationDidBecomeActive(_ application: UIApplication) {
if let shortcutItem = shortcutItemToProcess {
if shortcutItem.type == "com.myName.MyApp.myQuickAction" {
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let myViewController = storyboard.instantiateViewController(withIdentifier: "myViewController") as! MyViewController
if let navVC = window?.rootViewController as! UINavigationController? {
navVC.pushViewController(myViewController, animated: true)
}
}
因此,当应用程序已在运行时,它可以很好地工作,但是当应用程序被终止时,它可以将我带到我的应用程序主页上。我在做什么错,我该如何解决?