概述
简介
iOS从iPhone6s、iOS9加入了3D Touch功能,支持通过对屏幕施加不同程度的压力来访问快捷入口和附加功能,见下图。
3D Touch的使用场景
- 快捷菜单,快捷入口,快速访问程序的功能比如扫一扫、签到、我的订单
- 预览和弹出
快捷菜单的实现
支持两种方式添加快捷菜单
- 在项目的.plist 文件中添加
- 通过代码动态注册
可以在AppDelegate的启动方法里面初始化3DTouch菜单
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//初始化3DTouch
NSMutableArray *arrShortcutItem=[[NSMutableArray alloc] init];
UIApplicationShortcutItem *shortcutItemSearch=[[UIApplicationShortcutItem alloc] initWithType:@"test.search" localizedTitle:@"搜索" localizedSubtitle:nil icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"icon_shortcut_search.png"]userInfo:nil];
[arrShortcutItem addObject:shortcutItemSearch];
[UIApplication sharedApplication].shortcutItems=arrShortcutItem;
}
响应菜单点击事件
重写AppDelegate里的performActionForShortcutItem方法来响应点击
-(void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler
{
if([shortcutItem.type isEqualToString:@"test.search"])
{
//跳转到搜索页面
NSLog(@"跳转到搜索");
}
}
适配低版本系统和设备
如果你认为通过以上两种方式添加完快捷菜单就完成了工作,那就too young了,接下来还要考虑 适配的问题。因为这东西是从6s、iOS9才出现的。如果你是通过第一种方式 在项目的.plist文件中添加的快捷菜单,那恭喜你你不需要考虑适配问题,因为这种方式苹果已经帮我适配好了,如果你是通过第二种代码动态添加的方式,那就要考虑适配,否则在低版本的系统iOS9以下会崩溃。
通过代码动态注册主要考虑
- 系统是否开启了3dtouch,没开启,就没必要添加菜单
- 设备和系统是否支持3DTOUCH,不支持也不要添加
代码如下
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
//forceTouchCapability 这个属性表示是否支持3DTouch 是iOS9才有的 调用之前要判断一下,有没有这个属性
if ([self.window.rootViewController respondsToSelector:@selector(traitCollection)]&&[self.window.rootViewController.traitCollection respondsToSelector:@selector(forceTouchCapability)]){
//判断是否支持3dtouch
if(self.window.rootViewController.traitCollection.forceTouchCapability==UIForceTouchCapabilityAvailable){
NSMutableArray *arrShortcutItem=[[NSMutableArray alloc] init];
UIApplicationShortcutItem *shortcutItemSearch=[[UIApplicationShortcutItem alloc] initWithType:@"fumubang.search" localizedTitle:@"搜索" localizedSubtitle:nil icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"icon_shortcut_search.png"]userInfo:nil];
[arrShortcutItem addObject:shortcutItemSearch];
[UIApplication sharedApplication].shortcutItems=arrShortcutItem;
}else{
NSLog(@"不支持3dtouch");
}
}
}
其他
应用发布到应用商店,下载安装后,某个iOS版本的系统会默认给每个应用添加一个分享app的快捷菜单,所以我们不需要自己加分享app这个菜单,系统会自动附加。。。。
最后
以上就是顺心信封为你收集整理的iOS 支持3DTouch快捷菜单的全部内容,希望文章能够帮你解决iOS 支持3DTouch快捷菜单所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复