《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手势和触摸的用法
(六)IOS手势和触摸的用法
190 0
|
缓存 安全 Linux
自建iOS构建流水线建设核心原理剖析
文章主要从iOS打包机远程构建的角度分析,整体链路脚本涉及的shell、ruby、security指令、xml以及iOS工程化相关知识,文章通过一个远程构建流程简单并重点的讲解了如何规避本地打包环境下的小的修改出包存在的大量人工操作,如何动态化配置证书、版本号等信息以及内测分发方式的避坑点。
自建iOS构建流水线建设核心原理剖析
|
人机交互 开发者
iOS10为用户添加触摸反馈
iOS10为用户添加触摸反馈
178 0
|
数据安全/隐私保护 iOS开发 开发者
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建(二)
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建
283 0
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建(二)
|
数据安全/隐私保护 iOS开发 开发者
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建(一)
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建
393 0
iOS开发CoreGraphics核心图形框架之九——PDF文件的渲染与创建(一)
|
iOS开发 开发者
iOS开发CoreGraphics核心图形框架之八——层聚合
iOS开发CoreGraphics核心图形框架之八——层聚合
151 0
iOS开发CoreGraphics核心图形框架之八——层聚合
|
iOS开发 开发者
iOS开发CoreGraphics核心图形框架之六——梯度渐变(二)
iOS开发CoreGraphics核心图形框架之六——梯度渐变
176 0
iOS开发CoreGraphics核心图形框架之六——梯度渐变(二)
|
iOS开发 开发者
iOS开发CoreGraphics核心图形框架之六——梯度渐变(一)
iOS开发CoreGraphics核心图形框架之六——梯度渐变
245 0
iOS开发CoreGraphics核心图形框架之六——梯度渐变(一)
|
开发者 iOS开发 容器
iOS开发CoreGraphics核心图形框架之五——Patterns模型的应用
iOS开发CoreGraphics核心图形框架之五——Patterns模型的应用
187 0
iOS开发CoreGraphics核心图形框架之五——Patterns模型的应用
|
iOS开发 开发者
iOS开发CoreGraphics核心图形框架之四——变换函数
iOS开发CoreGraphics核心图形框架之四——变换函数
130 0