iOS 9 新特性之实现 3D Touch
http://www.cocoachina.com/ios/20151027/13812.html
10月19号,周末,起床去吃早餐,吃完回来顺便去沃尔玛逛逛,把晚上的菜给买了,逛着逛着就来到了卖苹果手机的柜台,可能职业病吧,随手玩了下最新出来的iPhone6s,看下它新出来的功能3D Touch,简单的使用了下挺难按出来的,貌似要找找手感,现在主流的app 已经支持此功能了,于是想实现下次功能的想法在脑海里挥之不去,最大的遗憾是只能在iPhone6s以上机型上使用,貌似其他手机可以通过越狱实现这一有趣的功能。题外话有点多了。。。。
下面我们进入正题:
在网上找了下资料,貌似很少的,只找到一篇简单介绍的
地址:http://www.jianshu.com/p/74fe6cbc542b
当然根据这篇文章的资料,很难做出这个有趣的功能,至少我是这么认为。
于是发挥出我那无敌于世的搜索功能,终于还是让我找到了突破点。
首先我们需要在Info.plist文件中加上一项
1
2
3
4
5
6
7
8
9
10
11
|
[key]UIApplicationShortcutItems[/key] [array] [dict] [key]UIApplicationShortcutItemIconType[/key] [string]UIApplicationShortcutIconTypeShare[/string] [key]UIApplicationShortcutItemTitle[/key] [string]Share[/string] [key]UIApplicationShortcutItemType[/key] [string]-11.UITouchText.share[/string] [/dict] [/array] |
在此讲解下其中都是些神马意思
UIApplicationShortcutItemIconType触发3D Touch时显示的图标类型
UIApplicationShortcutIconTypeShare显示分享的图标
当然肯定还可以选择其他的一些图标,在此不一一列举,因为我也才上手,不怕您笑话咱。
UIApplicationShortcutItemTitle显示名字的
UIApplicationShortcutItemType相当于项目中的Bundle Identifier唯一的,通过这个标示我们可以判断点相应的那一项触发相应的操作
可以多设置几个
到此Info.plist文件中我们已经设置完了,接下来我们应该咋整呢?
什么?问你们,你们居然不知道???
好吧,还是由我带领大家继续讲下一步该如何如何。。。
首先在我们AppDelegate.m中添加如下方法
1
2
3
4
|
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler{ } |
关于这个方法是干嘛的?在此大家应该都清楚了吧?
对没错,就是用来处理我们这个3D Touch触发事件的
我的Demo是这么写的,具体如下:
1
2
3
4
5
6
7
8
9
10
|
- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void(^)(BOOL succeeded))completionHandler{ //判断先前我们设置的唯一标识 if ([shortcutItem.type isEqualToString:@ "-11.UITouchText.share" ]){ NSArray *arr = @[@ "hello 3D Touch" ]; UIActivityViewController *vc = [[UIActivityViewController alloc]initWithActivityItems:arr applicationActivities:nil]; //设置当前的VC 为rootVC [self.window.rootViewController presentViewController:vc animated:YES completion:^{ }]; } } |
相信在场很多同僚都和我一样屌丝,还来不及去买iPhone6s导致我们无法去测试是否成功,下面我来带你们去解决该问题,虽然无法让你自己看到运行后的效果,但是判断下是否成功还是可以做到的,方法如下
1
2
3
4
5
6
|
if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) { NSLog(@ "你的手机支持3D Touch!" ); } else { NSLog(@ "你的手机暂不支持3D Touch!" ); } |
效果图给大家鉴赏一下哦!
iOS 9 新特性之实现 3D Touch的更多相关文章
- iOS 9应用开发教程之iOS 9新特性
iOS 9应用开发教程之iOS 9新特性 iOS 9开发概述 iOS 9是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统于2015年6月8号(美国时间)被发布.本章将主要讲解iOS ...
- iOS 8 新特性
这篇文章会介绍iOS8开发相关的主要特性. App 插件 通过支持插件,iOS8让我们可以系统指定的区域进行扩展,也就是为用户的特定需求提供自定义的方法.例如:可以通过App插件帮助用户分享他们的内容 ...
- iOS 9 新特性
这篇文章介绍了iOS9开发相关的简介,现在发布的设备都会搭载iOS9.这篇文章也列出了详细描述新特性的文章. iPad多线程增强 iOS9使用Slider Over, Split View, Pict ...
- iOS 7 新特性
iOS7更新了很多引人注目的功能.用户界面完全重新设计了.iOS7为开发2D,2.5D游戏引入了全新的动画系统.加强多线程,点对点连接,以及许多其他重要的功能让iOS7成为有史以来最有意义的一次发 ...
- iOS 10 新特性 大汇总 及iOS 10 的一些小问题和 xcode 8 的新版本小问题
iOS 10正式版是很值得升级的,特别是那些不打算购买iPhone 7的老用户,毕竟新系统在体验.流畅性上都做了一些升级. 1.开放电话接口 支持垃圾电话提醒 对于使用iPhone的国人来说,这个功能 ...
- Windows 10 新特性 -- Bing Maps 3D地图开发入门(一)
本文主要内容是讲述如何创建基于 Windows Universal App 的Windows 10 3D地图应用,涉及的Windows 10新特性包括 Bing Maps 控件.Compiled da ...
- iOS开发——新特性OC篇&Swift 2.0新特性
Swift 2.0新特性 转眼间,Swift已经一岁多了,这门新鲜.语法时尚.类型安全.执行速度更快的语言已经渐渐的深入广大开发者的心.我同样也是非常喜爱这门新的编程语言. 今年6月,一年一度 ...
- iOS开发——新特性OC篇&IOS9 系统新特性
IOS9 系统新特性 2015年6月89号凌晨召开的WWDC 2015苹果开发者大会发布了全新的iOS 9系统,PC6小编今天给大家整理了这次iOS9的系统更新带来了哪些新的功能与升级,本次新功能一览 ...
- iOS开发——新特性OC篇&IOS9 SDK新特性
iOS9 SDK新特性 WWDC 2015苹果开发者大会是移动开发者一年一度的盛会,InfoQ中文站除了第一时间整理Keynote内容分享给大家之外,还邀请了资深的一线开发者分享他们的收获.本文为王巍 ...
随机推荐
- 我认为最节省时间的CSS命名规范
CSS命名规范一 js中对变量的命名最好使用camel case驼峰式命名法,但CSS中更适用于red-box命名规范. CSS命名规范二 BEM命名规范 B=>block E=>elem ...
- SpringMVC,3种不同的URL路由配置方法 [转]
SpringMVC中配置URL拦截,非常简单.网上找个示例,就能通过.但是,在我做了好几个Web项目,又参与了别人主导的Web项目时,发现URL配置也非常有学问. 1. 先说说一种比较常见的: < ...
- 常用 docker 容器 使用
mongo: 单点 docker run -idt --name=mongo --restart=always -p : -v /home/hylas/opt/mongo/data:/data/db ...
- CentOS设置打开终端快捷键
- Linux内核源码真是个好东西
我突然发现,我是这么爱Linux内核源码.... 真幸福死了.... int vsprintf(char *buf, const char *fmt, va_list args) 这函数的实现 ...
- RabbitMq知识点总结
一.RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间 ...
- js+php如何实现上传图片
近期有一些朋友,在做上传图片这一块的时候进度卡住了.有个朋友说,我已经在这个问题上浪费了一天了. 确实,对于新手而言,上传图片成了比较复杂的的一个事,今天整理了一下常用的两种方式,让新手轻松掌握上传图 ...
- UVA11389 The Bus Driver Problem
题意:有司机,下午路线,晚上路线各n个.给每个司机恰好分配一个下午路线和晚上路线.给出行驶每条路线的时间,如果司机开车时间超过d,则要付加班费d*r.问如何分配路线才能使加班费最少. 贪心 ...
- 从零开始Android逆向教程(二)——什么是Xposed
前言在阅读本文之前,假设你的手机已经root,并且已经成功安装好了 XposedInstaller. Xposed是什么? Xposed 是一个 Android 平台上的动态劫持框架,通过 ...
- maven的hibernate4 依赖
<!-- 添加Hibernate4依赖 --> <dependency> <groupId>org.hibernate</groupId> <ar ...