您的位置:首页 > 移动开发 > IOS开发

[精通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单元来简化计算,但是计算得并不准确,只要手稍微一颤,三个像素点之间就计算出一个角度;可见此处需要一个比较严密的算法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: