《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
相关文章
|
1天前
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
14 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
6月前
|
测试技术 Swift iOS开发
探索iOS自动化测试:使用Swift编写UI测试
【8月更文挑战第31天】在软件开发的海洋中,自动化测试是保证船只不偏离航线的灯塔。本文将带领读者启航,深入探索iOS应用的自动化UI测试。我们将通过Swift语言,点亮代码的灯塔,照亮测试的道路。文章不仅会展示如何搭建测试环境,还会提供实用的代码示例,让理论知识在实践中生根发芽。无论你是新手还是有经验的开发者,这篇文章都将是你技能提升之旅的宝贵指南。
|
6月前
|
测试技术 Linux 虚拟化
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
详细的VMware虚拟机安装macOS Big Sur的保姆级教程,包括下载VMware和macOS镜像、图解安装步骤和遇到问题时的解决方案,旨在帮助读者顺利搭建macOS虚拟机环境。
281 3
iOS自动化测试方案(五):保姆级VMware虚拟机安装MacOS
|
6月前
|
测试技术 数据安全/隐私保护 iOS开发
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
iOS自动化测试方案的第四部分,涵盖了基础环境准备、iPhone虚拟机设置、MacOS虚拟机与iPhone真机的连接,以及扩展问题和代码示例,确保读者能够顺利完成环境搭建并进行iOS自动化测试。
678 0
iOS自动化测试方案(四):保姆级搭建iOS自动化开发环境
|
6月前
|
测试技术 开发工具 iOS开发
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
这篇文章是iOS自动化测试方案的第三部分,介绍了在没有MacOS系统条件下,如何使用WDA(WebDriverAgent)结合Python客户端库facebook-wda和tidevice工具,在Windows系统上实现iOS应用的自动化测试,包括环境准备、问题解决和扩展应用的详细步骤。
590 1
iOS自动化测试方案(三):WDA+iOS自动化测试解决方案
|
6月前
|
测试技术 虚拟化 iOS开发
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
这篇文章是iOS自动化测试方案的第二部分,详细介绍了在Xcode开发者工具中构建WebDriverAgent(WDA)应用到iPhone的全过程,包括环境准备、解决构建过程中可能遇到的错误,以及最终成功安装WDA到设备的方法。
365 0
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
|
6月前
|
测试技术 开发工具 虚拟化
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
这篇文章提供了一份保姆级的教程,指导如何在MacOS虚拟机上安装Xcode,包括环境准备、基础软件安装以及USB扩展插件的使用,以实现iOS自动化测试方案的第一步。
366 0
iOS自动化测试方案(一):MacOS虚拟机保姆级安装Xcode教程
|
9月前
|
Android开发 数据安全/隐私保护 iOS开发
ios和安卓测试包发布网站http://fir.im的注册与常用功能
ios和安卓测试包发布网站http://fir.im的注册与常用功能
413 0
ios和安卓测试包发布网站http://fir.im的注册与常用功能
|
9月前
|
iOS开发
iOS自动混淆测试处理笔记
iOS自动混淆测试处理笔记
36 0
|
9月前
|
iOS开发
  iOS 自动混淆测试处理笔记
  iOS 自动混淆测试处理笔记

热门文章

最新文章

  • 1
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 3
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
  • 6
    3天功能开发→3小时:通义灵码2.0+DEEPSEEK实测报告,单元测试生成准确率92%的秘密
  • 7
    Potpie.ai:比Copilot更狠!这个AI直接接管项目代码,自动Debug+测试+开发全搞定
  • 8
    使用ChatGPT生成登录产品代码的测试用例和测试脚本
  • 9
    使用 Apifox、Postman 测试 Dubbo 服务,Apache Dubbo OpenAPI 即将发布
  • 10
    通过ChatGPT生成测试用例和测试脚本(2)