美文网首页
08-手势识别(点按,长按,轻扫)

08-手势识别(点按,长按,轻扫)

作者: 洧中苇 | 来源:发表于2016-12-11 01:12 被阅读0次

    Make by:弓_虽_子

    通过touches方法监听view触摸事件的缺点?

    1.必须得自定义view,在自定义的View当中去实现touches方法.

    2.由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件

    3.不容易区分用户的具体手势行为(不容易区分是长按手势,还是缩放手势)这些等.

    iOS 3.2之后,苹果推出了手势识别功能(Gesture Recognizer在触摸事件处理方面大大简化了开发者的开发难度

    UIGestureRecognizer手势识别器

    利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势

    UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势

    手势使用方法

    1.创建手势

    2.添加手势

    3.实现手势方法

    添加点按手势

    UITapGestureRecognizer*tap= [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tap)];

    手势也可以设置代理

    tap.delegate=self;

    添加手势

    [self.imageVaddGestureRecognizer:tap];

    代理方法:

    是否允许接收手指

    -(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizershouldReceiveTouch:(UITouch*)touch{

    让图片的左边不可以点击,

    获取当前手指所在的点.是在图片的左边还是在图片的右边.

    CGPointcurP = [touchlocationInView:self.imageV];

    if(curP.x>self.imageV.bounds.size.width*0.5) {

    在图片的右侧

    returnYES;

    }else{

    在图片的左侧

    returnNO;

    }

    returnYES;

    }

    添加长按手势

    UILongPressGestureRecognizer*longP = [[UILongPressGestureRecognizeralloc]initWithTarget:selfaction:@selector(longP:)];

    [self.imageVaddGestureRecognizer:longP];

    当长按时调用.

    这个方法会调用很多次,当手指长按在上面不松,来回移动时,会持续调用.

    所以要判断它的状态.

    - (void)longP:(UILongPressGestureRecognizer*)longP{

    if(longP.state==UIGestureRecognizerStateBegan){

    NSLog(@"开始长按");

    }elseif(longP.state==UIGestureRecognizerStateChanged){

    NSLog(@"长按时手指移动");

    }elseif(longP.state==UIGestureRecognizerStateEnded){

    NSLog(@"手指离开屏幕");

    }

    }

    添加轻扫手势

    UISwipeGestureRecognizer*swipe = [[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipe:)];

    轻扫手势默认是向右边称轻扫

    可以设置轻扫的方法.

    一个轻扫手势只能设置一个方法的轻扫.想要让它有多个方向的手势,必须得要设置的

    swipe.direction=UISwipeGestureRecognizerDirectionLeft;

    [self.imageVaddGestureRecognizer:swipe];

    添加轻扫手势

    UISwipeGestureRecognizer*swipe2 = [[UISwipeGestureRecognizeralloc]initWithTarget:selfaction:@selector(swipe:)];

    轻扫手势默认是向右边称轻扫

    可以设置轻扫的方法.

    一个轻扫手势只能设置一个方法的轻扫.想要让它有多个方向的手势,必须得要设置的

    swipe2.direction=UISwipeGestureRecognizerDirectionUp;

    [self.imageVaddGestureRecognizer:swipe2];

    - (void)swipe:(UISwipeGestureRecognizer*)swipe{

    判断的轻扫的方向

    if(swipe.direction==UISwipeGestureRecognizerDirectionLeft) {

    NSLog(@"向左轻扫");

    }elseif(swipe.direction==UISwipeGestureRecognizerDirectionUp){

    NSLog(@"向上轻扫");

    }

    }

    相关文章

      网友评论

          本文标题:08-手势识别(点按,长按,轻扫)

          本文链接:https://www.haomeiwen.com/subject/gqklmttx.html