也就是以前的3D Touch功能,后面改成Haptic Touch。(最多只能添加4個)
一:添加
1.1: 靜態(tài)快捷菜單(配置在 Info.plist 里)
<key>UIApplicationShortcutItems</key>
<array>
<dict>
<key>UIApplicationShortcutItemIconType</key>
<string>UIApplicationShortcutIconTypeTime</string>
<key>UIApplicationShortcutItemTitle</key>
<string>時間</string>
<key>UIApplicationShortcutItemType</key>
<string>time</string>
</dict>
<dict>
<key>UIApplicationShortcutItemIconFile</key>
<string>liconPW</string>
<key>UIApplicationShortcutItemSubtitle</key>
<string>修改</string>
<key>UIApplicationShortcutItemTitle</key>
<string>密碼</string>
<key>UIApplicationShortcutItemType</key>
<string>password</string>
<key>UIApplicationShortcutItemUserInfo</key>
<dict>
<key>pw</key>
<string>change</string>
</dict>
</dict>
</array>
上面就是配置了2個快捷功能,時間和密碼
1.2 動態(tài)快捷菜單(代碼生成)
/*
參數(shù)解析:
initWithType: 類型 對應(yīng)UIApplicationShortcutItemType
localizedTitle: 標(biāo)題 對應(yīng)UIApplicationShortcutItemTitle
localizedSubtitle: 副標(biāo)題 對應(yīng)UIApplicationShortcutItemSubtitle
icon:圖標(biāo) 分系統(tǒng)自帶和自定義,系統(tǒng)自帶同UIApplicationShortcutItemIconType,使用如下
userInfo: 參數(shù)字典 對應(yīng)UIApplicationShortcutItemUserInfo
*/
UIApplicationShortcutItem *item1 = [[UIApplicationShortcutItem alloc] initWithType:@"add" localizedTitle:@"新建" localizedSubtitle:nil icon:[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd] userInfo:nil];
UIApplicationShortcutIcon *icon = [UIApplicationShortcutIcon iconWithTemplateImageName:@"liconPW"];
UIApplicationShortcutItem *item2 = [[UIApplicationShortcutItem alloc] initWithType:@"message" localizedTitle:@"消息" localizedSubtitle:nil icon:icon userInfo:nil];
[UIApplication sharedApplication].shortcutItems = @[item1,item2];
上面就是配置了2個快捷功能,新建和消息。
1.3、 Info.plist 對應(yīng)參數(shù)整理
一共對應(yīng)6個字段
UIApplicationShortcutItemType // 類型,后續(xù)可以通過這個字段區(qū)分點擊的按鈕
UIApplicationShortcutItemIconType // 系統(tǒng)默認(rèn)的圖標(biāo)(需要使用固定的)
UIApplicationShortcutItemIconFile // 自定義的圖標(biāo)名稱(尺寸推薦 35×35 )
UIApplicationShortcutItemTitle // 標(biāo)題
UIApplicationShortcutItemSubtitle //副標(biāo)題
UIApplicationShortcutItemUserInfo // 字典,可以傳一些要用的參數(shù)
1.4、系統(tǒng)自帶圖標(biāo)類型
UIApplicationShortcutIconTypeCompose, // 鉛筆寫作
UIApplicationShortcutIconTypePlay, // 播放按鈕
UIApplicationShortcutIconTypePause, // 暫停按鈕
UIApplicationShortcutIconTypeAdd, // 加號
UIApplicationShortcutIconTypeLocation, // 位置/定位
UIApplicationShortcutIconTypeSearch, // 搜索
UIApplicationShortcutIconTypeShare, // 分享
UIApplicationShortcutIconTypeProhibit, // 禁止/禁用
UIApplicationShortcutIconTypeContact, // 聯(lián)系人
UIApplicationShortcutIconTypeHome, // 房子
UIApplicationShortcutIconTypeMarkLocation, // 標(biāo)記位置
UIApplicationShortcutIconTypeFavorite, // 星標(biāo)收藏
UIApplicationShortcutIconTypeLove, // 愛心
UIApplicationShortcutIconTypeCloud, // 云
UIApplicationShortcutIconTypeInvitation, // 信封邀請
UIApplicationShortcutIconTypeConfirmation, // 對號確認(rèn)
UIApplicationShortcutIconTypeMail, // 郵件
UIApplicationShortcutIconTypeMessage, // 信息氣泡
UIApplicationShortcutIconTypeDate, // 日歷
UIApplicationShortcutIconTypeTime, // 時鐘
UIApplicationShortcutIconTypeCapturePhoto, // 拍照
UIApplicationShortcutIconTypeCaptureVideo, // 錄像
UIApplicationShortcutIconTypeTask, // 任務(wù)勾選
UIApplicationShortcutIconTypeTaskCompleted, // 任務(wù)完成(勾選方框)
UIApplicationShortcutIconTypeAlarm, // 鬧鐘
UIApplicationShortcutIconTypeBookmark, // 書簽
UIApplicationShortcutIconTypeShuffle, // 隨機(jī)播放
UIApplicationShortcutIconTypeAudio, // 音頻
UIApplicationShortcutIconTypeUpdate // 更新/刷新
2、點擊后獲取事件進(jìn)行對應(yīng)處理
2.1、iOS 12 及以前
#pragma - APP未啟動時
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIApplicationShortcutItem *shortcutItem = launchOptions[UIApplicationLaunchOptionsShortcutItemKey];
if (shortcutItem) {
if ([shortcutItem.type isEqualToString:@"time"]) {
// 點擊了時間按鈕
} else if ([shortcutItem.type isEqualToString:@"password"]) {
// 點擊了密碼按鈕
}
}
NSLog(@"參數(shù):%@", shortcutItem.userInfo);
return YES;
}
#pragma - APP已經(jīng)啟動時
-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
if ([shortcutItem.type isEqualToString:@"time"]) {
// 點擊了時間按鈕
} else if ([shortcutItem.type isEqualToString:@"password"]) {
// 點擊了密碼按鈕
}
completionHandler(YES);
}
2.2、iOS 13 +
#pragma - APP未啟動時
-(void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
UIApplicationShortcutItem *shortcutItem = connectionOptions.shortcutItem;
if (shortcutItem) {
if ([shortcutItem.type isEqualToString:@"time"]) {
// 點擊了時間按鈕
} else if ([shortcutItem.type isEqualToString:@"password"]) {
// 點擊了密碼按鈕
}
}
}
#pragma - APP已經(jīng)啟動時
-(void)windowScene:(UIWindowScene *)windowScene performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
if ([shortcutItem.type isEqualToString:@"time"]) {
// 點擊了時間按鈕
} else if ([shortcutItem.type isEqualToString:@"password"]) {
// 點擊了密碼按鈕
}
NSLog(@"參數(shù):%@", shortcutItem.userInfo);
completionHandler(YES);
}