今天突然心血來潮想研究一下iOS的QuickAction(也就是桌面3D Touch彈出的菜單)
*iOS 13長(zhǎng)按app也能彈出QuickAction
照著教程來卻發(fā)現(xiàn)
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
這個(gè)方法無(wú)論如何都不會(huì)執(zhí)行
再看代碼和別人的基本一模一樣。
然后就懷疑是不是Xcode11更新后出的問題,去搜了一下對(duì)應(yīng)的新特性。
發(fā)現(xiàn)Xcode11新建的項(xiàng)目 多了一個(gè)叫SceneDelegate的文件
現(xiàn)在UI的生命周期交給了SceneDelegate來管理,所以要修改UI,獲取shortcutItem都得在SceneDelegate中執(zhí)行了。
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
UIApplicationShortcutItem *shortcutItem = connectionOptions.shortcutItem;
if (shortcutItem) {
.......//根據(jù)點(diǎn)擊的shortcutItem執(zhí)行的操作
//比如我這里是vc.label.text = shortcutItem.localizedTitle;
}
以及原來的Appdelegate中的方法
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
改到SceneDelegate中執(zhí)行
- (void)windowScene:(UIWindowScene *)windowScene performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
參考文章:
iOS 3D Touch(一) Home Screen Quick Actions
Xcode11新變化:SceneDelegate