iOS开发之桌面快捷方式Quick Actions
长按桌面APPIcon图标快捷操作添加功能开发
在支持 3D Touch 的设备上,Quick Actions 可以让用户更快,更少的操作步骤去完成他们最常做的事情,其中这么多操作可以通过主屏幕直接完成。比如用力地长按微信图标,会弹出诸如"扫一扫"和"我的二维码"等常用功能,这个我在加好友的情况下经常会用到,不是"扫"别人就是被别人"扫"。然后这是它的官方介绍,3D Touch - iOS - Apple Developer。
支持的设备是在 iPhone 6S 和 6S Plus 及后续出的 iPhone 系列,系统则是从 iOS 9.0 开始支持 3D Touch。
Info.plist 创建快捷方式
快捷方式支持在 Info.plist 里直接定义,主键是UIApplicationShortcutItems,它是一个数组Array。各个 Key 值可以在查看Information Property List Key Reference,在这里简单地介绍一下各个 Key 的作用。
Key | 作用 |
---|---|
UIApplicationShortcutItemType(必需) | 唯一标识 |
UIApplicationShortcutItemTitle(必需) | 显示的标题 |
UIApplicationShortcutItemSubtitle(可选) | 显示的副标题 |
UIApplicationShortcutItemIconType(可选) | 使用系统的图标 |
UIApplicationShortcutItemIconFile(可选) | 使用项目的图标 |
UIApplicationShortcutItemUserInfo(可选) | 附加的信息 |
以下是一个详细的例子,上述的 Key 除了 UIApplicationShortcutItemUserInfo 外,其它都实现了。
现在我们来看看运行效果,值得一提的是,图标分别在上半屏和下半屏的情况下,显示的排序是会不同的,具体运行效果如下所示。
图标在上半屏
图标在下半屏
判断用户点击了哪个快捷方式
通过在 AppDelegate.m 文件中实现 UIApplicationDelegate 的代理方法
application:performActionForShortcutItem:completionHandler:,可以得知用户是从哪个快捷方式进来的,具体代码如下。
1 2 3 4 5 6 7 8 9 10 11 | - ( void )application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:( void (^)( BOOL ))completionHandler API_AVAILABLE(ios(9.0)) { NSLog (@ "%s" , __FUNCTION__); if ([shortcutItem.type isEqualToString:@ "search" ]) { NSLog (@ "用户从快捷方式“搜索”进来的" ); } else if ([shortcutItem.type isEqualToString:@ "list" ]) { NSLog (@ "用户从快捷方式“榜单”进来的" ); } else if ([shortcutItem.type isEqualToString:@ "public" ]) { NSLog (@ "用户从快捷方式“一键发布”进来的" ); } } |
代码创建快捷方式
快捷方式也支持代码创建,每一个 UIApplicationShortcutItem 就是一个快捷方式,一般在 AppDelegate.m 文件中实现方法 application:didFinishLaunchingWithOptions: 里编写实现代码,代码比较易懂,这里就不再说明了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | - ( BOOL )application:(UIApplication *)application didFinishLaunchingWithOptions:( NSDictionary *)launchOptions { NSLog (@ "%s" , __FUNCTION__); if ( @available (iOS 9.0, *)) { UIApplicationShortcutIcon *searchIcon = [UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeSearch]; UIApplicationShortcutItem *search = [[UIApplicationShortcutItem alloc] initWithType:@ "search" localizedTitle:@ "搜索" localizedSubtitle: nil icon:searchIcon userInfo: nil ]; UIApplicationShortcutIcon *publicIcon = [UIApplicationShortcutIcon iconWithTemplateImageName:@ "upload" ]; UIApplicationShortcutItem * public = [[UIApplicationShortcutItem alloc] initWithType:@ "public" localizedTitle:@ "一键发布" localizedSubtitle: nil icon:publicIcon userInfo: nil ]; UIApplicationShortcutItem *list = [[UIApplicationShortcutItem alloc] initWithType:@ "list" localizedTitle:@ "榜单" localizedSubtitle:@ "全区排行" icon: nil userInfo: nil ]; application.shortcutItems = @[list, public , search]; } return YES ; } |
摘自 https://www.jb51.net/article/162263.htm
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」