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

《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构建流水线建设核心原理剖析
文章主要从iOS打包机远程构建的角度分析,整体链路脚本涉及的shell、ruby、security指令、xml以及iOS工程化相关知识,文章通过一个远程构建流程简单并重点的讲解了如何规避本地打包环境下的小的修改出包存在的大量人工操作,如何动态化配置证书、版本号等信息以及内测分发方式的避坑点。
31078 0
(六)IOS手势和触摸的用法
(六)IOS手势和触摸的用法
95 0
iOS10为用户添加触摸反馈
iOS10为用户添加触摸反馈
103 0
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建(二)
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建
152 0
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建(一)
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建
213 0
iOS开发CoreGraphics核心图形框架之八——层聚合
iOS开发CoreGraphics核心图形框架之八——层聚合
80 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
Facebook iOS App技术演化十年之路
立即下载
From Java_Android to Swift iOS
立即下载
深入剖析 iOS 性能优化
立即下载