简介

iOS从iPhone6s、iOS9加入了3D Touch功能,支持通过对屏幕施加不同程度的压力来访问快捷入口和附加功能,见下图。

3D Touch的使用场景

  • 快捷菜单,快捷入口,快速访问程序的功能比如扫一扫、签到、我的订单
  • 预览和弹出

快捷菜单的实现

支持两种方式添加快捷菜单
- 在项目的.plist 文件中添加

- 通过代码动态注册
可以在AppDelegate的启动方法里面初始化3DTouch菜单

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{//初始化3DTouchNSMutableArray *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)]){//判断是否支持3dtouchif(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快捷菜单相关推荐

  1. 【Delphi】Android 桌面图标添加快捷菜单功能

    目录 一.为什么需要桌面图标长按快捷菜单 二.实现Android桌面图标快捷菜单 第一步:Delphi 创建一个 FMX 工程文件:ShortCut_Demo.dpr 第二步:编辑项目中的 Andro ...

  2. uniapp ios支持长按app 3D Touch快捷菜单项

    uniapp ios支持长按app 3D Touch快捷菜单项 uniapp 安卓 长按app 快捷方式 shortcut 一.配置manifest.json文件 切换到代码视图,uni-app项目在 ...

  3. IOS开发(27)之UITableView的Cell显示长按快捷菜单

    1 前言 对于UITableView的Cell长按,可以触发快捷菜单,包括复制,粘贴之类的操作. 2 代码实例 ZYViewController.h #import <UIKit/UIKit.h ...

  4. iOS开发 3D-touch使用

    3D Touch的触控技术,被苹果称为新一代多点触控技术.3D Touch,苹果iPhone 6s的新功能,看起来类似 PC 上的右键.有Peek Pop 两种新手势.iOS 9提供了如下3D Tou ...

  5. 为ASP.NET控件加入快捷菜单

    Cutting Edge:为ASP.NET控件加入快捷菜单 英文原文: Adding a Context Menu to ASP.NET Controls 作者:Dino Esposito 翻译: M ...

  6. IOS实现3DTouch功能

    赶需求期间,想着别人应用都搞起3DTouch功能了,咱也来装逼一会,凸显下逼格. 废话少说,先搜索了前人的热心奉献,自己再动手丰衣足食,下面归纳总结下. 首先,想要体验3DTouch功能,必须至少得是 ...

  7. Android 桌面图标长按快捷菜单

    为了更快使用APP的某个功能,在手机桌面长按图标呼出快捷菜单 需要注意:在7.0以上的系统才支持该功能 两种方案可以实现该功能,第一种静态文件,不过基本上满足不了日常需求.第二种就是动态加载. Sho ...

  8. iOS开发3DTouch(一)

    一.3D Touch 的简单介绍 ①主屏幕的快捷操作: 在主屏幕按压app图标,有两种类型:静态操作(在info.plist中添加UIApplicationShortcutItems数组)和动态操作( ...

  9. c#快捷菜单contextMenuStrip的使用

    1.首先是官方文档的解释 https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.contextmenustrip?view= ...

最新文章

  1. 戴尔公司向SAP HANA明确示爱 发布全新系统设计方案
  2. Windows PE 重定位表编程(枚举重定位地址)
  3. python爬虫课件_Python爬虫教学视频(附课件)
  4. JavaWeb之Cookie
  5. 记一次node项目重构改进
  6. 单片机代码真值怎么取反c语言,手把手教你学单片机的C语言程序设计(八)运算符与表达式(续).pdf...
  7. matlab lbp特征,lbp特征(lbp纹理特征提取)
  8. python获取验证码失败_python 爬虫:验证码一直错误
  9. 如何批量将 Xls 格式的 Excel 文档转为 Xlsx 格式
  10. 爱企查爬虫selenium
  11. svn执行update操作后出现:Error : Previous operation has not finished; run 'cleanup' if it was interrupted.
  12. c语言中x的n次幂程序,请教c语言关于X的N次幂问题?
  13. 横扫13项中文NLP记录,中文字型深度学习模型Glyce问世!
  14. 设计模式“6”大原则!
  15. 【Visual C++】游戏开发五十六 浅墨DirectX教程二十三 打造游戏GUI界面(一)
  16. 企业打造顶级研究院的最优路径是什么?
  17. HTML+CSS制作七夕情人节求婚动画(520情人节程序员表白)
  18. 关于SQL反勾号或者叫飘号(``)
  19. 疯了疯了,安利一款非常好用的屏幕捕捉工具FSCapture
  20. 掌财社:马桶MT被山寨,聊天宝赚钱不如捡废品,多闪表现平平

热门文章

  1. 纽约州立石溪分校计算机科学排名,美国纽约州立大学石溪分校排名_2019纽约州立大学石溪分校排名(USNews排名)...
  2. fork函数产生进程
  3. 基于android手机实时监控ipcam视频之一:RTSP
  4. vue项目 情侣空间 纪念日功能模块
  5. ne_products 表
  6. Sqoop导入导出基本操作
  7. 服务器系统如何克隆,服务器如何克隆操作系统
  8. Linux下Moudle工具的介绍与使用
  9. 轻轻松松背单词软件测试,Englishfield词汇记忆与测试
  10. STM32CUBEMX 配置12脚3641BS以及串口显示RTC时间