我是靠谱客的博主 顺心信封,最近开发中收集的这篇文章主要介绍iOS 支持3DTouch快捷菜单,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

简介

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快捷菜单所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部