《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:实现把它们重定向到窗口。
1.14.3 实现TOUCHkit叠加视图
TOUCHkit叠加是一个清晰的UIView单件。它是在应用程序第一次请求其共享实例时创建的,并且调用把它添加到应用程序的关键窗口中。叠加的用户交互标志被禁用,允许触摸通过响应者链继续进行,甚至在通过标准的开始/移动/结束/取消事件回调处理那些触摸之后。
触摸处理事件在每个触点绘制一个圆形,创建一个持久的指向触摸的指针,直到绘图完成为止。秘诀1-13详细说明了处理该功能的回调和绘图方法。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《libGDX移动游戏开发从入门到精通》一1.5 其他的一些准备工作
本节书摘来异步社区《libGDX移动游戏开发从入门到精通》一书中的第1章,第1.5节,作者: 黄俊东 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.5 其他的一些准备工作 通过学习前面的知识,我们已经学会写一个libGDX的HelloWorld程序,并且学会了在Android平台和桌面上调试自己的libGDX程序。但是在很多情况下,我们还需要看Android的源码、libGDX的源码、直接打开可运行的jar包。这一节就来讲解这些知识。 1.5.1 关联Android源码 Android系统也是由许许多多的代码组成的,这些代码也很有可能会有错误。在遇到一个问题的时候,除了我们自身的原因,还有可能是别人给我们提供的代码本身就是错误的。所以,在开发的时候,经常需要去看一下别人的代码都是怎么写的,有没有错误。 (1)在这之前要先确保你已经利用SDK Manager下载好你所使用的Android版本的源码,下载界面如图1.44所示。 (2)没有关联源码前,按住“Ctrl”键,单击MainActivity中onCreate()中的super.onCreate(),Mai...
- 下一篇
《iOS 8应用开发入门经典(第6版)》——第2章,第2.3节进一步探索
本节书摘来自异步社区《iOS 8应用开发入门经典(第6版)》一书中的第1章,第2.3节进一步探索,作者 【美】John Ray(约翰 雷),更多章节内容可以访问云栖社区“异步社区”公众号查看 2.3 进一步探索iOS 8应用开发入门经典(第6版)您的水平还不高,无法让您阅读与编码相关的教程,但如果您有兴趣,可花些时间了解Xcode提供的其他功能。由于篇幅限制,本章只有几十页,但有关该独特工具的材料却相当多。本章内容涵盖了您需要掌握的有关Xcode的所有知识,但还是建议您阅读Apple的《Xcode 5 Overview》。要找到该文档,可在Xcode中选择菜单Help>Xcode Overview。
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- MySQL8.0.19开启GTID主从同步CentOS8
- Mario游戏-低调大师作品
- CentOS7安装Docker,走上虚拟化容器引擎之路