zoukankan      html  css  js  c++  java
  • UIGestureRecognizer

    UIGestureRecognizer

    1.是什么?

    专门用来处理手势识别的类.

    2.有什么用?

    这是一个抽象类.通过其具体子类可以处理手势识别,

    具体子类.

    UITapGestureRecognizer//轻拍
    
    UIPinchGestureRecognizer//缩放
    
    UIRotationGestureRecognizer//旋转
    
    UISwipeGestureRecognizer//轻扫
    
    UIPanGestureRecognizer//拖拽
    
    UIScreenEdgePanGestureRecognizer//轻拍屏幕边缘
    
    UILongPressGestureRecognizer//长按

    3.怎么用?

    >1.创建.

    >2.添加给需要进行手势识别的视图:addGestureRecognizer

    >3.添加识别后处理的方法

    例.

    实现代码:

       UIRotationGestureRecognizer *rotatetion = [[UIRotationGestureRecognizer alloc]init];
    
        [self.pinkView addGestureRecognizer:rotatetion];
    
        [rotatetion addTarget:self action:@selector(rotationPinkView:)];
    - (void)rotationPinkView:(UIRotationGestureRecognizer *)rotation
    {
    
        self.pinkView.transform = CGAffineTransformMakeRotation(rotation.rotation);
    }

    其他的几个手势处理的类的用法格式上是一致的,此处不赘述.

    4.UIGestureRecognizer的代理方法.

    >1.同时识别多个手势操作.

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;

    说是同时,但是单位时间还是只能处理一个手势,只不过只要此处返回YES,比如一边旋转一边缩放,旋转完成后,松手,缩放同样有效.

    >2.是否允许接收触摸对象,就是是否允许视图对手势做出反应.

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch;

    返回NO,不识别手势操作.

    5.注意:

    >1.有一个需要注意的地方:当使用旋转的时候,如果用rotate,将当前的transform传递进去,会越转越快.因为roation属性是旋转角度,比如第一次旋转10,被旋转视图停留在10度的位置,再次旋转,如果在当前基础上旋转10,也就是相当于初始位置旋转了20,就是说,调用对应的手势识别方法时,会在10度的基础上再次旋转20,也就是说你手指虽然旋转了20,但是被旋转视图实际上旋转了30.

    6.什么时候用?

    UIResponder的touch系列方法也可以处理屏幕的手势,touches系列方法由UIResponder提供,只有继承自UIResponder的类才识别手势,UIView继承自UIResponder,所有的UI控件都继承自UIView,因而所有的控件都具有touches系列方法.

    但是有一个致命弱点,touches系列方法只能监听触摸对象在视图上的位置,而无法识别触摸的状态-----轻重缓急,从左到右等方向,等等手势操作,UIGestureRecognizer刚好可以弥补这一点.因此,需要识别手势的状态是可以使用UIGestureRecognizer来处理.

  • 相关阅读:
    这 100 道 Python 题,拿去刷!!!
    快速入门 TensorFlow2 模型部署
    零基础入门 Kubernetes,你需要知道这些
    Java 面试必考难点,这一个教程全搞定
    Flask实战:如何从零开发“知乎”
    关于layui表格渲染templet解析单元格的问题
    清除input输入框的历史记录
    phpmyadmin导入导出大数据文件的办法
    yiiaseInvalidCallException The cookie collection is read only.
    Yii2.0关闭自带的debug功能
  • 原文地址:https://www.cnblogs.com/yufang/p/5225828.html
Copyright © 2011-2022 走看看