3D Touch 的官方文档翻译及个人总结

        前几天给自家的APP加上了3D Touch.从学习到集成用了大半天的时间.(其实3D Touch so easy. 之所以用了大半天时间是因为3D Touch 的Home Screen Quick Actions 需要考虑一个问题.至于这个问题好不好解决,关键还是看你自己项目的主UI结构喽大笑)


官方文档翻译:


        搭载iOS 9 系统的新手机型号(其实就是iPhone 6S 啦)为用户提供了一个三维的交互体验.

                1. 用户可以点击APP的icon来直接执行app中的方法.

2. 在app内部,用户可以预览内容和快速进行一些操作.


博主总结在进行3D Touch开发时前要遵循两个原则:

1. 在没有3D Touch的设备要用其他手势代替该功能(比如长按...).

2. 必须在运行时检测 3D Touch 是否可用,因为用户可能会随时关闭3D Touch. 具体操作和代码见这     里: http://blog.csdn.net/soindy/article/details/49904805

一 . Home Screen Quick Actions

之前用户可以轻点一个app的icon来加载它,或者长按来编辑其在屏幕的显示.现在在iPhone 6S 和iPhone 6S Plus,用户可用得带一个快捷菜单,当用户选择了一个快捷动作,你的应用程序被launch或者activate.相应的在appDelegate的代理方法中会收到该快捷动作的相关信息.



好的快捷启动是预测用户的操作,从而加速用户和app的交互. 这里有静态和动态两种快速启动方式.

1. 定义静态的快速启动只需要在app的Info.plist中定义UIApplicationShortcutItems数组即可.比如下图:



至于每个key代表的什么意思请看这里的官方文档翻译:点击打开链接


二 .Peek and Pop

你可以 enable 你app中的view controller来响应用户不同强度的按压.当用户不断用力的时候,交互分为三个阶段:

1. 指示该内容的preview是否可用.

2. 显示一个有快速选项(peek quick actions)的快速预览(peek的形式显示preview).

3. 在preview中显示的导航栏(optional).  ----- pop

当你使用 peek 和 pop 的时候.系统判读这个压力的强度在哪个阶段,并且如何过渡到下一个,意思就是这个动作和动 画是苹果实现的,开发者不需要关系.  用户可以是 设置 -> 通用 -> 辅助功能 -> 3D Touch中调整peak and pop的灵 敏度.


1. 指示该内容的preview是否可用. 当轻轻的按的时候,周围的其他内容模糊,证明peek是可用的.

2. peek. 再稍微用力一点按压,来显示peek.peek一般用来显示更多内容.例如下面的Mail app.如果用户在这个点停止 按压.peek消失,app回到正常状态.

3. peek quick actions. 如果用户向上轻滑,系统会显示你定义的与之相关的quick actions.每一个peek quick action是你app的连接.用户轻点一个quick action,可以调用这个连接.同样你也可以在web view中使用peek and pop.



三. Force Properties

在iOS 9 中.UITouch有2个新特性来支持你自定义3D Touch. force 和 maximumPossibleForece. 这些特性可以让你检测和反馈你app在UIEveent对象中收到的压力的大小. Force是一个float值,高动态变化.

具体代码如下:

 

            // 如果支持3Dtouch

            if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 9.0) { // 必须判断,否则低版本crash

                

                if (self.traitCollection.forceTouchCapability == UIForceTouchCapabilityAvailable) { // 必须动态检测

                    // 开启定时器发送命令

                    if (!_touchTimer) {

                        

                        _touchTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(touchStrengthChanged) userInfo:nil repeats:YES];

                    }

            }



- (void)touchStrengthChanged {

          if (self.touchStrength.force > 0) {

             NSLog(@"%d",self.touchStrength.force);

        }

          }


四. 3D Touch的可用性和人机交互指南

3D Touch仅在支持3D Touch的设备并且3D Touch打开的时候可用.在iOS9中3D Touch默认是打开的..用户可以在设置中将其关闭.当3D Touch可用的时候,好好的利用它的特性.而在不可用的设备要提供相对应的实现,比如实现 touch and hold(就是长按). 3D Touch也支持VoiceOver. 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值