从didFinishLaunchingWithOptions调用时,3D Touch快速操作不起作用

时间:2019-04-03 20:27:15

标签: ios swift 3dtouch

我正在我的应用程序中实现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)
            }
        }

因此,当应用程序已在运行时,它可以很好地工作,但是当应用程序被终止时,它可以将我带到我的应用程序主页上。我在做什么错,我该如何解决?

0 个答案:

没有答案