开发者社区> 异步社区> 正文

《iOS 6核心开发手册(第4版)》——1.14节秘诀:实时触摸反馈

简介:
+关注继续查看

本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第1章,第1.14节秘诀:实时触摸反馈,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.14 秘诀:实时触摸反馈
iOS 6核心开发手册(第4版)
你曾经需要录制iOS应用程序的演示吗?这总会涉及折中。可以使用架空相机并与影子作斗争,另外用户的手可能会挡住屏幕,或者可以使用像Reflection(http://reflectionapp.com)这样的工具,但是只能看到直接出现在iOS设备屏幕上的内容。这些应用程序录制缺少关于用户触摸和视觉焦点的任何指示。

秘诀1-13提供了一组简单的类(称为TOUCHkit),它们提供了实时的触摸反馈层级,可供演示使用。利用它,可以同时查看正在录制的屏幕以及创建你正尝试展示的交互的触摸。它提供了一种方式,用于编译应用程序,以便进行正常部署和演示部署。不要改变核心应用程序以使用它。它被设计成用作单个开头,为每种应用提供编译版本。

为了演示这种情况,在示例代码库中附带了秘诀1-13中所示的代码以及一个标准的Apple演示。这显示了如何把工具包应用在几乎所有标准的应用程序中。

1.14.1 启用触摸反馈
通过启用TOUCHkit特性来添加触摸反馈,而不会影响正常的代码。要启用TOUCHkit,可以设置单个标志,编译并使用演示版本,并完成触摸叠加。对于App Store部署,要禁用该标志。应用程序将恢复其正常的行为,并且无须担心App Store的非安全调用。

#define USES_TOUCHkit  1

这个秘诀假定正在使用具有单个主窗口的标准应用程序。在编译时,工具包将利用一个自定义的类替换该窗口,用于捕获和复制所有的触摸,允许应用程序显示用户的触摸气泡反馈。

只需执行一处关键的代码级改变,但是它非常小。在应用程序的委托类中,定义一个在构建iOS屏幕时要使用的WINDOW_CLASS。

 #if USES_TOUCHkit
#import "TOUCHkitView.h"
#import "TOUCHOverlayWindow.h"
#define WINDOW_CLASS TOUCHOverlayWindow
#else
#define WINDOW_CLASS UIWindow
#endif

这样就无须声明UIWindow,可以使用通过开关设置的任何类。

WINDOW_CLASS *window;
window = [[WINDOW_CLASS alloc]
     initWithFrame:[[UIScreen mainScreen] bounds]];

从此就可以像正常的那样设置窗口的rootViewController。

1.14.2 截取和转发触摸事件
这个叠加的关键在于截取触摸事件,在正常的界面之上创建一个浮动展示,然后把那些事件转发给应用程序。TOUCHkit视图位于界面的顶部。自定义的窗品类捕获用户触摸事件,并在TOUCHkit视图中把它们展示为圆形。它然后将转发它们,就像用户是在与正常的UIWindow交互一样。为了实现这一点,这个秘诀使用了事件转发。

事件转发是通过调用辅助的事件处理程序实现的。TOUCHOverlayWindow类重写了UIWindow的sendEvent:方法以强制触摸绘图,然后调用它的超类实现以将控制返回给正常的响应者链。

下面的实现是从Apple针对iOS的事件处理指南(Event Handling Guide)中提取的。它集合了所有与当前事件关联的触摸,允许多触摸以及单触摸交互,把它们分配给TOUCHkit视图层,然后通过正常的UIWindow sendEvent:实现把它们重定向到窗口。


605e89a532c046978442c426613cf1e59e89b48f

1.14.3 实现TOUCHkit叠加视图
TOUCHkit叠加是一个清晰的UIView单件。它是在应用程序第一次请求其共享实例时创建的,并且调用把它添加到应用程序的关键窗口中。叠加的用户交互标志被禁用,允许触摸通过响应者链继续进行,甚至在通过标准的开始/移动/结束/取消事件回调处理那些触摸之后。

触摸处理事件在每个触点绘制一个圆形,创建一个持久的指向触摸的指针,直到绘图完成为止。秘诀1-13详细说明了处理该功能的回调和绘图方法。


f01d0c8e2173551ad348601b4eb19b4890b688ac

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
给 iOS 开发者的 GCD 用户手册
本文讲的是给 iOS 开发者的 GCD 用户手册,Grand Central Dispatch,或者GCD,是一个极其强大的工具。它给你一些底层的组件,像队列和信号量,让你可以通过一些有趣的方式来获得有用的多线程效果。可惜的是,这个基于C的API是一个有点神秘
780 0
【iOS开发】快速生成高斯模糊效果背景
这篇文章是上一篇文章 http://www.jianshu.com/p/c9083a105921 的拓展,不罗嗦了,直接上代码。 //创建毛玻璃效果的背景 func createFrostBackground (img:UIImage,view:UIView) { let w = self.
1003 0
通过HTTP/2通道实时获取IoT设备状态和数据
通过HTTP/2通道实时获取IoT设备状态和数据 1.服务端订阅 1.1 服务端订阅流程 在IoT场景,有时候我们期望业务服务器能接收到设备状态和设备采集的数据,而不是通过云产品中转, 这时我们可以开启服务端订阅,IoT平台会把设备产生的消息通过HTTP/2通道推送到业务服务器,以便根据自身业务场景消费。
2344 0
我为什么要写:新书《离线和实时大数据开发实战》
新书《离线和实时大数据开发实战》 购买链接(机械工业出版社官方淘宝店铺) 感谢@薛奎 和@空无 大大写推荐书评。 空无和薛奎的书评 大数据技术一直是个领先互联网公司的必备核心技术,阿里巴巴最近10年一直在持续加大投入,并将大数据处理技术用于大量的大规模业务场景。每年双十一对实时、离线技术也都是极限的考验,而作者就是在这样的环境下成长起来,基于真实业务场景钻研相关的技术,既有实战也有
3234 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
12049
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载