《iOS 6核心开发手册(第4版)》——1.6节秘诀:测试触摸
本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第1章,第1.6节秘诀:测试触摸,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.6 秘诀:测试触摸
iOS 6核心开发手册(第4版)
屏幕上用于直接操作界面的大多数视图元素都不是矩形。这使触摸检测变得复杂,因为实际的视图矩形的某些部分可能不对应于实际的触摸点。图1-2显示了实际发生的问题。右边的截屏图显示了界面及其基于触摸的子视图,左边的截屏图则显示了每个子视图的实际视图界限。每个屏幕上的圆形周围的淡灰色区域都落在界限内,但是对这些区域的触摸应该不会“碰到”正在处理的视图。
iOS会在整个视图框架内感知用户点按。这包括未绘图的区域(比如图1-2中的实际圆形外面的框架角落),以及主展示区域。这意味着除非添加某种碰撞测试,否则用户可能尝试点按被UIView框架的清晰部分“遮挡”的视图。
图1-2 应用程序应该忽略对包围每个圆形的灰色区域的触摸(左图)。
实际的界面(右图)使用清晰的背景(Alpha值为0)来隐藏视图中未使用的部分
通过设置背景色使实际的视图界限可见,例如:
dragger.backgroundColor = [UIColor lightGrayColor];
这将添加图1-2中所示的后挡板(左图),并且不会影响屏幕上实际的艺术作品。在这种情况下,艺术作品包括居中的圆形以及透明的背景。除非添加某种测试,否则对这个框架的任何部分的所有点按都将被正在处理的视图捕获。启用背景色提供了一种方便的调试辅助手段,用于使每个视图的真实范围可见;在代码中不要忘记注释掉背景色赋值。此外,还可以设置视图层级的边框宽度或样式。
秘诀1-5给视图添加了一个简单的碰撞测试,以确定触摸是否落在圆形内。这个测试重写了标准UIView的pointInside:withEvent:方法,它返回YES(点落在视图内)或NO(点没有落在视图内)。这里的测试使用基本的几何形状,检查触摸是否位于圆形的半径内。可以提供任何测试,处理屏幕上的视图。在下一节中的秘诀1-6中可以看到,可以扩展该测试,以进行更精细的控制。
要知道的是,在Retina显示设备上用于触摸检测的数学运算仍然与旧设备上的相同。额外的机载像素不会影响姿势处理的数学运算。视图的坐标系统仍然是具有子像素精度的浮点。设备用于绘制屏幕的像素数量不会影响UIView界限和UITouch坐标,它只是简单地提供一种方式,在该坐标系统内提供包含更多细节的图形。
注意:
不要把测试内的点弄混淆,这将利用类似的探测方法hitTest:withEvent:检查某个点是否落在视图内。碰撞测试返回包含特定点的视图层次结构中最上面的视图(最接近用户/屏幕)。它将在每个视图上调用pointInside:withEvent:。如果方法内的点返回YES,将在该层次结构中继续往下搜索。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《Android应用开发》——1.2节安装软件
本节书摘来自异步社区《Android应用开发》一书中的第1章,第1.2节安装软件,作者 【美】Chris Haseman,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.2 安装软件Android应用开发这里过程变得有点复杂,有多种不同的可能。根据所运行的具体平台,可能需要不时地跳到后面的内容。如果某部分内容的标题看起来不适用于当前操作系统,就跳过这部分内容,向前阅读,直到找到适用的内容。保持耐心,下面马上就要开始第一个Android应用了。 注意: 在本书的学习期间,假定用Eclipse IDE完成主要的开发部分。本书会试图包括命令行方法以及所有重要命令和任务的Eclipse截屏图,以防平台换成Vim或者Emacs。 1.2.1 安装Eclipse安装Eclipse通常很简单,把下载的文件解压缩,把应用保存在方便记忆的位置上。建议现在还不要启动Eclipse,而是等到把Android SDK安装好之后(见1.2.2节“安装Android SDK”)。同时也要确保已经安装最新的开发工具。 1.2.2 安装Android SDK现在有了Eclipse,只要再做几步就可以运行自己的...
- 下一篇
《趣学CCNA——路由与交换》——6.1节Cisco设备的管理与配置
本节书摘来自异步社区《趣学CCNA——路由与交换》一书中的第6章,第6.1节Cisco设备的管理与配置,作者 田果 , 彭定学,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.2 Cisco设备的管理与配置趣学CCNA——路由与交换 6.2.1 通过Console接口连接网络设备当我们启动Cisco设备后,所面对的是一个完全没有配置过的设备。如果我们需要让它完成某些任务,就必须对它进行配置。在这里,我们介绍最为常用的一种配置方式,那就是通过连接图6-2所示的Console接口对设备进行管理。 当然,通过电脑连接Console接口,需要一根数据线,干这事儿的数据线业内俗称Console线。这类线一端是一个RS-232的DB-9接口(串口),用来连接咱们的电脑;另一端是RJ-45接头(水晶头),用来连接Cisco设备的Console接口,如图6-6所示。如果您没有Console线,劝您入职前上网淘一根。这种线用不着自己去做,便宜的Console线十来块钱人民币就可以入手,还免去了自己查询线序制作接头之苦,省力省心。 注释:笔记本刚开始飞入国内的寻常百姓家差不多是1998年前后的事儿...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2配置默认Tomcat设置,开启更多高级功能