也就是以前的3D Touch功能,后面改成Haptic Touch。(最多只能添加4个)
一:添加
1.1: 静态快捷菜单(配置在 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 动态快捷菜单(代码生成)
/*
参数解析:
initWithType: 类型 对应UIApplicationShortcutItemType
localizedTitle: 标题 对应UIApplicationShortcutItemTitle
localizedSubtitle: 副标题 对应UIApplicationShortcutItemSubtitle
icon:图标 分系统自带和自定义,系统自带同UIApplicationShortcutItemIconType,使用如下
userInfo: 参数字典 对应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 对应参数整理
一共对应6个字段
UIApplicationShortcutItemType // 类型,后续可以通过这个字段区分点击的按钮
UIApplicationShortcutItemIconType // 系统默认的图标(需要使用固定的)
UIApplicationShortcutItemIconFile // 自定义的图标名称(尺寸推荐 35×35 )
UIApplicationShortcutItemTitle // 标题
UIApplicationShortcutItemSubtitle //副标题
UIApplicationShortcutItemUserInfo // 字典,可以传一些要用的参数
1.4、系统自带图标类型
UIApplicationShortcutIconTypeCompose, // 铅笔写作
UIApplicationShortcutIconTypePlay, // 播放按钮
UIApplicationShortcutIconTypePause, // 暂停按钮
UIApplicationShortcutIconTypeAdd, // 加号
UIApplicationShortcutIconTypeLocation, // 位置/定位
UIApplicationShortcutIconTypeSearch, // 搜索
UIApplicationShortcutIconTypeShare, // 分享
UIApplicationShortcutIconTypeProhibit, // 禁止/禁用
UIApplicationShortcutIconTypeContact, // 联系人
UIApplicationShortcutIconTypeHome, // 房子
UIApplicationShortcutIconTypeMarkLocation, // 标记位置
UIApplicationShortcutIconTypeFavorite, // 星标收藏
UIApplicationShortcutIconTypeLove, // 爱心
UIApplicationShortcutIconTypeCloud, // 云
UIApplicationShortcutIconTypeInvitation, // 信封邀请
UIApplicationShortcutIconTypeConfirmation, // 对号确认
UIApplicationShortcutIconTypeMail, // 邮件
UIApplicationShortcutIconTypeMessage, // 信息气泡
UIApplicationShortcutIconTypeDate, // 日历
UIApplicationShortcutIconTypeTime, // 时钟
UIApplicationShortcutIconTypeCapturePhoto, // 拍照
UIApplicationShortcutIconTypeCaptureVideo, // 录像
UIApplicationShortcutIconTypeTask, // 任务勾选
UIApplicationShortcutIconTypeTaskCompleted, // 任务完成(勾选方框)
UIApplicationShortcutIconTypeAlarm, // 闹钟
UIApplicationShortcutIconTypeBookmark, // 书签
UIApplicationShortcutIconTypeShuffle, // 随机播放
UIApplicationShortcutIconTypeAudio, // 音频
UIApplicationShortcutIconTypeUpdate // 更新/刷新
2、点击后获取事件进行对应处理
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(@"参数:%@", shortcutItem.userInfo);
return YES;
}
#pragma - APP已经启动时
-(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已经启动时
-(void)windowScene:(UIWindowScene *)windowScene performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler {
if ([shortcutItem.type isEqualToString:@"time"]) {
// 点击了时间按钮
} else if ([shortcutItem.type isEqualToString:@"password"]) {
// 点击了密码按钮
}
NSLog(@"参数:%@", shortcutItem.userInfo);
completionHandler(YES);
}