手势

监听触摸事件的做法

  • 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
  • 默认情况下,只能同时支持一个手势,可以通过代理进行设置

    • 重写一下代理方法
    • getstureRecognizerSimultaneously
      • 同时的,return YES

你可能感兴趣的:(手势)