[精通iOS开发(第5版)]第17章 轻击、触摸和手势 笔记
2015-07-29 00:51
417 查看
该章主要讲述iphone开发中使用的触控交互技术。
其讲述脉络为:
讲述触控交互中的响应者和响应者链的概念,这一概念和windows编程中的消息处理概念类似,都存在较为明晰的层级关系,且事件或消息可以层层递进;
然后讲述了四个基础的触控通知,即touchesBegan/touchesMoved/touchesEnded/touchesCancelled,其中touchesCancelled是指在触控过程中被其他事情(比如来电)打断所触发的通知;
然后在以上四个基础触控通知的基础上,讲了怎么通过touchesBegan和touchesMoved通知判断当前是上下滑动还是左右滑动;
再然后就是从这个滑动识别的例子中,引出手势识别器的概念,现成的手势识别器都是对常见手势的一些特殊化处理,相当于二次封装;比如UISwipeGestureRecognizer滑动手势识别器,该识别器可以分别识别横向和纵向的滑动操作;
然后从手势识别器的概念上继续扩展,讲到了多点触控的问题,可以通过UIGestureRecognizer对象获取numberOfTouches;
讲完了多点触控,又讲了多次点击的问题;这里用到的UITapGestureRecognizer,可以通过numberOfTapsRequired属性指定响应指定次数的点击消息;且可以通过requireGestureRecognizerToFail方法指定手势识别器识别哪个动作失败之后再调用自己,这样就可以防止不同次数的点击事件重复触发;
然后讲的就是常见二指手势中的捏合和旋转;在该例子中,为了让图像视图同时支持捏合和旋转两个手势识别器,视图控制器类实现了UIGestureRecognizerDelegate委托协议;
最后讲了如何自定义手势;通过继承UIGestureRecognizer类,来定义自己的手势类,需要通过touchesBegan和touchesMoved方法来计算轨迹的角度,然后判断是否是画了对号;但实际上这个识别计算的过程较为复杂,书中虽然提供了一个CGPointUtils.h单元来简化计算,但是计算得并不准确,只要手稍微一颤,三个像素点之间就计算出一个角度;可见此处需要一个比较严密的算法。
其讲述脉络为:
讲述触控交互中的响应者和响应者链的概念,这一概念和windows编程中的消息处理概念类似,都存在较为明晰的层级关系,且事件或消息可以层层递进;
然后讲述了四个基础的触控通知,即touchesBegan/touchesMoved/touchesEnded/touchesCancelled,其中touchesCancelled是指在触控过程中被其他事情(比如来电)打断所触发的通知;
然后在以上四个基础触控通知的基础上,讲了怎么通过touchesBegan和touchesMoved通知判断当前是上下滑动还是左右滑动;
再然后就是从这个滑动识别的例子中,引出手势识别器的概念,现成的手势识别器都是对常见手势的一些特殊化处理,相当于二次封装;比如UISwipeGestureRecognizer滑动手势识别器,该识别器可以分别识别横向和纵向的滑动操作;
然后从手势识别器的概念上继续扩展,讲到了多点触控的问题,可以通过UIGestureRecognizer对象获取numberOfTouches;
讲完了多点触控,又讲了多次点击的问题;这里用到的UITapGestureRecognizer,可以通过numberOfTapsRequired属性指定响应指定次数的点击消息;且可以通过requireGestureRecognizerToFail方法指定手势识别器识别哪个动作失败之后再调用自己,这样就可以防止不同次数的点击事件重复触发;
然后讲的就是常见二指手势中的捏合和旋转;在该例子中,为了让图像视图同时支持捏合和旋转两个手势识别器,视图控制器类实现了UIGestureRecognizerDelegate委托协议;
最后讲了如何自定义手势;通过继承UIGestureRecognizer类,来定义自己的手势类,需要通过touchesBegan和touchesMoved方法来计算轨迹的角度,然后判断是否是画了对号;但实际上这个识别计算的过程较为复杂,书中虽然提供了一个CGPointUtils.h单元来简化计算,但是计算得并不准确,只要手稍微一颤,三个像素点之间就计算出一个角度;可见此处需要一个比较严密的算法。
相关文章推荐
- ios状态栏操作
- iOS开发之软键盘使用小技巧
- 9秒学院教你如何成为iOS开发达人
- iOS 开发一些小技巧(收集整理)
- iOS开发:iOS中几种数据持久化方案:你要永远地记住!
- xcode 6.4 下 IOS 8.4 隐藏模拟器的状态栏
- IOS动画之抖动
- iOS开发——OC基础-ARC、BLOCK、协议
- iOS学习之MVC设计模式的理解
- iOS的文件管理——沙盒(sandbox)
- IOS switch-case知多少
- (九十五)音效播放方法和工具类的制作
- 《iOS核心动画高级技巧》part1-CALayer
- IOS开发概述-07.IOS程序启动原理
- iOS CABasicAnimation 动画受layer.anchorPoint和layer.position 的影响
- iOS前期OC训练OC_10Block
- iOS新特性页面制作
- iOS前期OC训练OC_08,09内存管理
- IOS开发—NSTimer
- IOS中NSUserDefaults的用法(轻量级本地数据存储)