主屏幕快捷操作

也就是以前的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);
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容