《iOS 6核心开发手册(第4版)》——1.12节创建自定义的姿势识别器
本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第1章,第1.12节创建自定义的姿势识别器,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.12 创建自定义的姿势识别器
iOS 6核心开发手册(第4版)
只需做少量的工作即可把秘诀1-10中所示的代码转换成自定义的识别器,如秘诀1-11中所介绍的那样。子类化UIGestureRecognizer将使你能够构建自己的圆形识别器,并把它添加到应用程序中的视图中。
首先把UIGestureRecognizerSubclass.h导入新类中。该文件声明了识别器子类重写或自定义所需的一切内容。对于重写的每个方法,都要确保调用该方法的原始版本,这需要在激活新代码前调用超类方法。
姿势分为两类:连续的和离散的。圆形识别器是离散的,它要么识别一个圆,要么失败。连续的姿势包括捏合和平移,其中识别器在它们的整个生命周期内发送更新。识别器是通过设置其state属性来生成更新的。
识别器基本上是指尖的状态机。所有的识别器都开始于可能的状态(UIGestureRecognizer StatePossible),然后对于连续的姿势,将经过一系列变化的状态(UIGestureRecognizerStateChanged)。离散的识别器要么成功地识别一种姿势(UIGestureRecognizerStateRecognized),要么失败(UIGestureRecognizerStateFailed),如秘诀1-11中所示。除了将状态设置为可能或失败时之外,每次更新状态时,识别器都会把动作发送给它的目标。
在秘诀1-11中看到的相当长的注释是子类头文件的礼节性的做法。我在这里包括了它们,因为它们有助于解释重写其超类的关键方法的作用。Reset方法把识别器返回到它的静止状态,允许它使自身准备好迎接下一次识别挑战。
触摸开始(等)方法是在与它们对应的UIResponder类似的位置调用的,使你能够在触摸生命周期的相同位置执行测试。在触摸结束回调之前,这个示例会一直等待,以检查成功或失败,并且使用秘诀1-10中定义的相同的testForCircle方法。
注意:
作为一种重写哲学,一旦有可能,姿势识别器就会失败。当它们成功时,应该在本地属性中存储关于姿势的信息。圆形识别器应该保存任何检测到的圆,以使用户知道姿势发生在什么位置。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《iOS组件与框架——iOS SDK高级特性剖析》——第6章,第6.3节媒体选择器
本节书摘来自异步社区《iOS组件与框架——iOS SDK高级特性剖析》一书中的第6章,第6.3节媒体选择器,作者 【美】Kyle Richter , Joe Keeley,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.3 媒体选择器iOS组件与框架——iOS SDK高级特性剖析要让用户能够选择要欣赏的歌曲,最简单的方式是让他能够访问MPMediaPickerController,如图6.2所示。MPMediaPickerController让用户能够浏览艺术家、歌曲、播放列表和专辑,以指定要播放的歌曲。要使用MPMediaPickerController,必须遵守委托协议MPMediaPicker ControllerDelegate,它定义了两个必须实现的方法。第一个是mediaPicker:didPickMediaItems:,在用户选择了要欣赏的歌曲时被调用。将通过一个MPMediaItemCollection对象返回选定的歌曲,MPMusicPlayerController可直接将这个对象作为参数来调用setQueueWith ItemCollection:。为MPM...
- 下一篇
《iOS 8应用开发入门经典(第6版)》——第2章,第2.2节使用iOS模拟器
本节书摘来自异步社区《iOS 8应用开发入门经典(第6版)》一书中的第2章,第2.2节使用iOS模拟器,作者 【美】John Ray(约翰 雷),更多章节内容可以访问云栖社区“异步社区”公众号查看 2.2 使用iOS模拟器iOS 8应用开发入门经典(第6版)第1章说过,甚至不需要有iOS设备就可进行iOS开发,其原因是Xcode包含iOS模拟器。该模拟器很好地模拟了Apple iPhone和iPad,包含Safari、通讯录、设置、Game Center、日历、地图、报刊杂志(Newsstand)、健康(Health)、Passbook等应用程序用于集成测试,如图2.31所示。 在早期针对模拟器进行开发可节省大量的时间:您无需等到将应用程序安装到实际设备就可看到修改代码的效果。另外,您无需购买并安装开发人员证书就可在模拟器中运行代码。 然而,模拟器并非完美的iOS设备,它不能模拟复杂的多触点事件,也不能提供有些传感器(陀螺仪、加速计等)的真实读数。在这些方面,它最多只能旋转以测试横向界面以及模拟简单的“摇动”。虽然如此,对大多数应用程序来说,其功能足够了,是开发过程的重要组成部分。 警...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8