《iOS 6高级开发手册(第4版)》——1.12节使用运动事件检测晃动
本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第1章,第1.12节使用运动事件检测晃动,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.12 使用运动事件检测晃动
iOS 6高级开发手册(第4版)
当iPhone检测到一个运动事件时,它会把该事件传递给当前的第一个响应者,即响应者链中的主对象。响应者是可以处理事件的对象,所有的视图和窗口都是响应者,因此也是应用程序对象。
响应者链提供了一种对象层次结构,所有的对象都可以响应事件。当朝向链开始处的对象接收到一个事件时,不会进一步传递那个事件。对象会处理它。如果它不能处理,可以把该事件转移给下一个响应者。
对象通常可以通过把它们自己声明为第一个响应者来获得这种身份,这是通过become FirstResponder实现的。在这个代码段中,UIViewController确保它会变成第一个响应者,只要它的视图出现在屏幕上即可。一旦消失,它将放弃第一个响应者的身份:
- (BOOL)canBecomeFirstResponder { return YES; } // Become first responder whenever the view appears - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; [self becomeFirstResponder]; } // Resign first responder whenever the view disappears - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; [self resignFirstResponder]; }
第一个响应者将接收所有的触摸和运动事件。运动回调反映了UIView触摸回调阶段。回调方法如下。
motionBegan:withEvent::这个回调指示运动事件的开始。在编写本书时,只能识别一类运动事件:晃动。将来可能不是这样,因此你可能想在代码中检查运动类型。
motionEnded:withEvent::在第一个响应者在运动事件结束时接收这个回调。
motionCancelled:withEvent::与触摸一样,可以通过打入的电话和其他系统事件取消运动。Apple建议在代码中实现全部3个运动事件回调(类似地,还要实现全部4个触摸事件回调)。
下面的代码段显示了一对运动回调的示例。如果在设备上测试它们,可以注意到几件事。第一,从用户的角度看,开始和结束事件几乎是同时发生的,为这两类事件播放声音有些小题大做。第二,它偏向于进行从一侧到另一侧的晃动检测,与前后和上下晃动相比,iPhone更擅长检测从一侧到另一侧的晃动。最后,Apple的运动实现使用了一种轻微锁定的方法。直到生成了另一个运动事件或者在处理了前一个运动事件之后,才能生成一个新的运动事件。Shake to Shuffle和Shake to Undo事件使用了相同的锁定机制:
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event { // Play a sound whenever a shake motion starts if (motion != UIEventSubtypeMotionShake) return; [self playSound:startSound]; } - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { // Play a sound whenever a shake motion ends if (motion != UIEventSubtypeMotionShake) return; [self playSound:endSound]; }
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《CCNP安全Secure 642-637认证考试指南》——6.1节摸底测验
本节书摘来自异步社区《CCNP安全Secure 642-637认证考试指南》一书中的第6章,第6.1节摸底测验,作者【美】Sean Wilkins , Trey Smith,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.1 摸底测验CCNP安全Secure 642-637认证考试指南摸底测验有助于读者了解自己目前的知识水平并制订相应的学习计划。如果需要从头至尾阅读本章内容,则可以暂时跳过摸底测验。 摸底测验包括10道题,均取自本章“基础知识点”中的内容。读者可以将该测验作为分配学习时间的辅助手段。 表6-1列出了本章的主要知识点以及相应的摸底测验题号。 注意:摸底测验旨在评估读者对本章内容的掌握程度。如果答错了某道题目或对某道题目有疑问,请将其标记为错误。不要将没有把握的题目一笔带过,这样会降低测验结果的准确性,还可能误导自己。1.Which of the following three components comprise Cisco 802.1X authentication? Cisco 802.1X认证架构由以下哪3部分构成? a. Cisco IOS Softwa...
- 下一篇
《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制
本节书摘来异步社区《OpenGL ES 3.x游戏开发(上卷)》一书中的第1章,第1.5节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.5 Android应用程序运行的机制 前面介绍了如何搭建Android开发环境、如何开发Hello Android应用程序以及Android应用程序的调试,接下来在本节中将简要地介绍Android应用程序的运行机制。 1.5.1 应用程序的系统架构 Android平台由应用程序、应用程序框架、Android运行时、系统库以及底层Linux内核构成,详细结构如图1-68所示。 说明 应用程序层里面包含的就是需要读者去发挥创意开发的、各种各样丰富多彩的应用程序,这也是一般Android应用开发人员工作的层次。 1.5.2 应用程序框架 Android应用程序框架是开发Android应用的基础,开发者在开发时有大部分的时间用在调用这一层。Android应用程序框架包含活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、位置管理器、资源管理器以及通知管理器等,如图1-69所示。 应用程序框架层各部分的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7安装Docker,走上虚拟化容器引擎之路
- 2048小游戏-低调大师作品
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 设置Eclipse缩进为4个空格,增强代码规范
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作