iOS9的新特性3D-Touch

Apple在iphone6s中推出了的新特性:3D-Touch,由于相关的文档还比较少,我在学习中总结了一下可能有用的功能点。

1. 什么是3D-Touch

虽然Force Touch和3Dtouch依赖的是同种技术,也都基于苹果的Taptic引擎,但3D Touch多了重按,且触摸屏对压力更加敏感。

简而言之:

(Peek and Pop): 在App中用户可以使用3D-Touch来提前预览App /网页的下级页面 /在地图上预览地址连接

(Home Screen Quick Action): 在Home界面对App进行类似PC端右键菜单的操作

(Pressure Sensitivity): 在绘图有关应用中时通过感知压力更改笔刷的功能

2. 3D-Touch功能点详解

2.1开发环境

开发环境:Xcode7 和iOS9 SDK

限制条件:

1.Xcode7的模拟器暂时无法支持3dtouch的调试,但今天找到有人提供了可以让我们在模拟器和非6s上体验3D-Touch的方法:

模拟器上进行3D-Touch的插件,git地址:

https://github.com/DeskConnect/SBShortcutMenuSimulator

非iphone6s上模拟3D-Touch方法:

旧iPhone如何体验iPhone6s 3D Touch?

http://www.pcpop.com/view/1/1139/1139358.shtml

2.Interface Builder仍无法支持直接的编辑3D-Touch有关的界面

2.2提前预览 Peek and Pop

2.2.1 方法:

Apple为在UIViewController类中增加了UIPreviewAction, UIPreviewActionGroup的类和相关的协议,来帮助完成应用中Peek and Pop的功能。而在UIWebView中也增加了预览网页的相关类。(Safari中已支持预览下级页面的功能)。

UIPreviewAction允许开发者在用户使用3D Touch功能触控一个UI元素的时候,快速地在一个新的预览窗口中显示某些内容,而无需弹出一个完整的Controller。 我尝试在企鹅FM中实现了一下该功能,分为以下几步:

STEP 1:

ViewController服从UIViewControllerPreviewingDelegate协议

STEP 2:

实现协议内的Peek和Pop方法

STEP 3:

viewDidLoad中注册

2.2.3 效果

在企鹅FM里尝试了一下这个功能,在精选页上重按主播推荐栏目后,效果如下:

这里还可以根据需要加上下拉菜单,但这里我就没有再尝试。

2.2.4 注意点

1. 预览页面不要有类似Edit Menu和button之类的能操作的组件

2. 适当使用Pop之后的上拉quick action菜单,个人理解是如果当你3D-Touch的区域本身紧密关联着2-4个操作时,可以考虑在上拉quick action菜单中增加这些操作(例如微信把对应某个朋友圈状态中的赞/评论就放入了这个上啦菜单)

3. 不要依赖于Peek and Pop来得到下级页面的信息,因为用户有可能关闭掉3D-Touch功能,或是使用的是不支持3D-Touch的设备,因此还是要本身页面就尽可能提供有用的信息。

2.3 Home页右键菜单效果 Home Screen Quick Action

简介:

当用户使用 3D Touch 按下某个应用的图标时,一个选项列表就会被弹出,允许用户快速跳转至应用的特定部分,或者执行某项应用内的功能。

Quick Actions菜单最多只能添加四项,有静态和动态两种形态。

2.3.1 静态方法

静态的Quick Actions需要在程序的info.plist中的UIApplicationShortcutItems中预先定义,在这里系统加上响应的项,只能手动输入进去。

在Dictionary中可以加入多个required/optional的属性,例如副标题,标签Icon等,也可以再加入字典用于传值.

2.3.2 动态方法

在UIApplicationShortCutItem.h的文件中可以看到一系列创建标签和获得相关属性的方法.

因此动态的Quick Actions可根据程序设定来改变,比如通过后台下发,用户自定义等。(Apple官网代码例如下)

2.3.3 效果

我在企鹅FM的App尝试添加一个Home Screen Quick Action菜单,效果如下:

当用户选择菜单其中一个项时,会把启动或唤醒App,此时UIKit会调用UIApplicationDelegate中的application:performActionForShortcutItem:completionHandler:来响应标签行为,因此首先要遵从UIApplicationDelegate Protocol的相关方法(2.3.4 注意点5)。

2.3.4 注意点:

系统允许最多四个的快捷操作选项。动态和静态的菜单项可以混合出现在列表中,优先展示静态,再展示动态。

当用户是第一次安装或更新了新版本,从未进入该App时的情景下就触发Home页的3D-Touch,菜单中只会出现静态的菜单项和上一个版本的动态项,只有当经过第一次启动后,才会显示最新版本的动态的菜单项。(这里或许可以使用userInfo dictionary中提供版本信息来解决可能出现的问题)

命名应该简洁明了,说明该按键对应的功能。

Quick Action只是快捷帮助访问App中某个功能的辅助途径,但在设计开发App的时候要避免完全依赖它来简化App复杂度的想法。首先,我们应该做的是把App内的各个功能的访问路径间接合理化,再用这个辅助功能来锦上添花。

不要用来作为弹通知的一个途径,这逻辑上不合理且会让用户更加困扰。

在app的入口函数:

- (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions; 也需要进行一下判断,在launchOptions中有UIApplicationLaunchOptionsShortcutItemKey这样一个键,通过它,我们可以区别是否是从标签进入的app,如果是则处理结束逻辑后,返回NO,防止处理逻辑被反复回调。

2.4 按压力度Press Sensitivity

由于3Dtouch拓展了Force Touch的功能,因此iOS9 SDK中完善了UITouch Object中Force Touch的属性Force Properties,以支持3D-Touch:

3.总结

总的来说3D-Touch在已发布的App中应用到的场景还不多,Apple的developer文档中的描述也相对简单。但是可以从iphone原配置的一些应用中的应用得到一些启发,在自己开发的App也加入3D-Touch的应用,让用户体验更好~

原文发布于微信公众号 - 腾讯大数据(tencentbigdata)

原文发表时间:2015-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Flutter入门到实战

2017年你绝对想尝试的25个新安卓库(持续更新中...)

这是一份2017年1,2月份发布的25个最佳安卓库的列表,你应该会喜欢,虽然是按顺序排列的,但排名不分先后。让我们开始吧!

28720
来自专栏FH云彩

Win8快捷键

11330
来自专栏Java Web

SpringBoot技术栈搭建个人博客【前台开发/项目总结】

先吐槽一句..写页面是真的不擅长,然后限于时间的问题,我开始考虑换用Bootstrap来完成页面的编写,因为时间有限(我得在实习完之前把所有页面开发完),学习V...

32150
来自专栏Java Web

SpringBoot技术栈搭建个人博客【前台开发/项目总结】Bootstrap or Vue?前台页面分析后台页面分析项目总结

39730
来自专栏曾柏羲的专栏

Vue 浅析与实践

本文首先对 Vue 的相关技术进行简单介绍与分析,接着总结开发实践(主要描述 Vuex 实践)过程中的流程规范,并记录在此过程中遇到的问题与关键点,最后做出一点...

51020
来自专栏Fundebug

微信小程序开发BUG经验总结

小程序开发越来越热,开发中遇到各种各样的bug,在此总结了一些比较容易掉进去的坑分享给大家。

583120
来自专栏沈唁志

WordPress博客集成Hitokoto一言经典语句功能

20230
来自专栏Material Design组件

Human Interface Guidelines —— Edit Menus

14460
来自专栏葡萄城控件技术团队

哪些JavaScript IDE最好用?

阅读本文之前,分享大家一张图片,看图会发现JavaScript开发需求最高,占比达到42.84%,因此掌握JavaScript语言好工作就不愁啦,工欲善其事必先...

30650
来自专栏pangguoming

微信公众平台开发 自定义菜单

自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示:

59610

扫码关注云+社区

领取腾讯云代金券