《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,将在该层次结构中继续往下搜索。


ba05543539273c9764df597c8f65639da6ab9ba2
相关文章
|
2月前
|
iOS开发
iOS自动混淆测试处理笔记
iOS自动混淆测试处理笔记
13 0
|
3月前
|
iOS开发
  iOS 自动混淆测试处理笔记
  iOS 自动混淆测试处理笔记
|
3月前
|
Java 测试技术 API
安卓APP和iOS APP在测试上的区别是什么?
安卓APP和iOS APP在测试上的区别是什么?
|
4月前
|
人工智能 测试技术 iOS开发
iOS性能指标和性能测试工具
iOS性能指标和性能测试工具
|
4月前
|
移动开发 数据安全/隐私保护 iOS开发
ios app真机测试到上架App Store详细教程-必看
ios app真机测试到上架App Store详细教程-必看
50 0
|
7月前
|
iOS开发
iOS自动混淆测试处理笔记
自动混淆测试是针对 oc 类和oc方法这两个模块进行自动混淆ipa,并ipa安装到设备中运行,通过检测运行ipa包是否崩溃,来对oc类和oc方法进行筛选。如果崩溃,则该类名或方法名不可混淆。 当没有勾选oc类和oc方法,会自动测试所有的可执行文件中的oc类和oc方法名。如果有选中数据,则只会测试选中的数据集合。除了 oc 类和oc方法这两个模块会自动筛选测,其他的模块需要手动配置
|
7月前
|
存储 数据安全/隐私保护 开发者
iOS- 最全的真机测试教程
iOS- 最全的真机测试教程
|
8月前
|
运维 网络协议 测试技术
iOS 自己搭建的IPv6环境测试正常,任然被拒
iOS 自己搭建的IPv6环境测试正常,任然被拒
51 0
|
9月前
|
测试技术 iOS开发
iOS PushMeBaby 远程推送测试
iOS PushMeBaby 远程推送测试
133 0
|
10月前
|
JavaScript 测试技术 Shell
03-MacOS上搭建Appium的iOS测试环境
03-MacOS上搭建Appium的iOS测试环境