监听触摸事件的做法
- touches方法监听view触摸事件的缺点
- 必须要自定义view
- 无法让其他外界对象监听view的触摸事件
- 不容易区分用户的具体手势行为
- ios 3.2之后 手势识别
UIGestureRecognizer
- 手势识别器
- 抽象类,它的子类才能处理具体的手势
- Tap
- Pinch
- Pan
- Swipe
- Rotation
- LongPress
-
点按手势 Tap
- 创建手势
- 点按手势Tap initWithTarget:action:
- 添加手势
- addGestureRecognizer:
- 是否响应事件
- 创建手势
-
手势可以设置代理
- UIGestureRecognizerDelegate
-
shouldReceiveTouch:是否允许接收手指
- 获取当前手指的点
- 判断哪个区域允许点按
-
长按手势 LongPress
- 长按移动时会持续调用
- 判断手势状态
- state(Began|Ended|Changed)
- 清扫手势 swipe
- 默认向右滑
- 可以修改清扫方式
- direction
- 一个手势只能对应一个方向
- 平移 Pan
- 不需要计算偏移量
- 直接获取偏移量
- translationView:
- 相对于最原始的位置
- 平移,修改当前view的transform
- 带Make,因为相对于最原始的点的,手指离开的时候,距离重新开始,会从原始的点继续开始
- 不带Make,一拖拽,就飞出去了
- 不让累加,清零
- setTranslation:CGPoint(0,0)inView:
- 相对于上一次走了多少
- 旋转 Rotation
- 获取旋转的度数
- rotation,这个度数已经是一个弧度了
- 旋转,self.transform
- 带Make
不带Make,清零 setRotation:0
- 获取的度数也是最原始的弧度
- 获取旋转的度数
-
捏合(缩放) Pinch
- 不带Make,清零复位
- setScale:1
- 不带Make,清零复位
-
默认情况下,只能同时支持一个手势,可以通过代理进行设置
- 重写一下代理方法
- getstureRecognizerSimultaneously
- 同时的,return YES
网友评论