Xcode11新建项目 QuickAction点击事件无法触发的问题

今天突然心血来潮想研究一下iOS的QuickAction(也就是桌面3D Touch弹出的菜单)
*iOS 13长按app也能弹出QuickAction

照着教程来却发现

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler

这个方法无论如何都不会执行
再看代码和别人的基本一模一样。
然后就怀疑是不是Xcode11更新后出的问题,去搜了一下对应的新特性。
发现Xcode11新建的项目 多了一个叫SceneDelegate的文件

现在UI的生命周期交给了SceneDelegate来管理,所以要修改UI,获取shortcutItem都得在SceneDelegate中执行了。

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
        UIApplicationShortcutItem *shortcutItem = connectionOptions.shortcutItem;
  if (shortcutItem) {
  .......//根据点击的shortcutItem执行的操作
   //比如我这里是vc.label.text = shortcutItem.localizedTitle;
}

以及原来的Appdelegate中的方法

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler

改到SceneDelegate中执行

- (void)windowScene:(UIWindowScene *)windowScene performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler 

参考文章:
iOS 3D Touch(一) Home Screen Quick Actions
Xcode11新变化:SceneDelegate

你可能感兴趣的:(Xcode11新建项目 QuickAction点击事件无法触发的问题)