zoukankan      html  css  js  c++  java
  • iOS 手势

    iOS开发中手势识别有六种:

    轻击手势(TapGestureRecognizer),

    轻扫手势 (SwipeGestureRecognizer),

    长按手势(LongPressGestureRecognizer),

    拖动手势(PanGestureRecognizer),

    捏合手势(PinchGestureRecognizer),

    旋转手势(RotationGestureRecognizer),

    1,轻击手势(TapGestureRecognizer)

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];
    tapGesture.numberOfTapsRequired = 1; //点击次数
    tapGesture.numberOfTouchesRequired = 1; //点击手指数
    [self.view addGestureRecognizer:tapGesture];
    
    //轻击手势触发方法
    -(void)tapGesture:(UITapGestureRecognizer *)sender
    {
        //your code
    }
    
    
    

    2,长按手势(LongPressGestureRecognizer)

    UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGesture:)];
    //设置长按时间
    longPressGesture.minimumPressDuration = 0.5;
    [self.view addGestureRecognizer:longPressGesture];
    
    //长按手势触发方法
    -(void)longPressGesture:(id)sender
    {
        UILongPressGestureRecognizer *longPress = sender;
        if (longPress.state == UIGestureRecognizerStateBegan)
        {
           //your code
        }
    }
    
    说明:长按手势的常用状态如下
    
    开始:UIGestureRecognizerStateBegan
    
    改变:UIGestureRecognizerStateChanged
    
    结束:UIGestureRecognizerStateEnded
    
    取消:UIGestureRecognizerStateCancelled
    
    失败:UIGestureRecognizerStateFailed
    
    
    

    3,轻扫手势(SwipeGestureRecognizer)

    UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
    //设置轻扫的方向
    swipeGesture.direction = UISwipeGestureRecognizerDirectionRight; //向右
    [self.view addGestureRecognizer:swipeGesture];
    
    UISwipeGestureRecognizer *swipeGestureLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];
    //设置轻扫的方向
    swipeGestureLeft.direction = UISwipeGestureRecognizerDirectionLeft; //向左
    [self.view addGestureRecognizer:swipeGestureLeft];
    
    //轻扫手势触发方法
    -(void)swipeGesture:(id)sender
    {
    
        UISwipeGestureRecognizer *swipe = sender;
    
        if (swipe.direction == UISwipeGestureRecognizerDirectionLeft)
        {
            //向左轻扫
        }
    
        if (swipe.direction == UISwipeGestureRecognizerDirectionRight)
        {
            //向右轻扫
        }
    }
    
    
    

    4,捏合手势(PinchGestureRecognizer)

    UIPinchGestureRecognizer *pinchGesture = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGesture:)];
    [self.view addGestureRecognizer:pinchGesture];
    
        ////捏合手势触发方法
    -(void) pinchGesture:(id)sender
    {
        UIPinchGestureRecognizer *gesture = sender;
        //手势改变时
        if (gesture.state == UIGestureRecognizerStateChanged)
        {
             //捏合手势中scale属性记录的缩放比例
            _imageView.transform = CGAffineTransformMakeScale(gesture.scale, gesture.scale);
        }
    
        //结束后恢复
        if(gesture.state==UIGestureRecognizerStateEnded)
        {
            [UIView animateWithDuration:0.5 animations:^{
                _imageView.transform = CGAffineTransformIdentity;//取消一切形变
            }];
        }
    }
    
    
    

    5,拖动手势(PanGestureRecognizer)

    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGesture:)];
    [self.view addGestureRecognizer:panGesture];
    
    //拖动手势触发方法
    -(void) panGesture:(id)sender
    {
        UIPanGestureRecognizer *panGesture = sender;
        CGPoint movePoint = [panGesture translationInView:self.view];
        //your code
    }
    
    
    

    6,旋转手势(RotationGestureRecognizer)

    UIRotationGestureRecognizer *rotationGesture = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationGesture:)];
    [self.view addGestureRecognizer:rotationGesture];

    //旋转手势触发方法
    -(void)rotationGesture:(id)sender
    {
        UIRotationGestureRecognizer *gesture = sender;
        if (gesture.state==UIGestureRecognizerStateChanged)
        {
            _imageView.transform=CGAffineTransformMakeRotation(gesture.rotation);
        }
        if(gesture.state==UIGestureRecognizerStateEnded)
        {
            [UIView animateWithDuration:1 animations:^{
                _imageView.transform=CGAffineTransformIdentity;//取消形变
            }];
        }
    }
  • 相关阅读:
    在 《超过 光速 的 方法》 里 的 回复
    超过 光速 的 方法
    在 《我对 相对论 提出了一个 修正,名为 “K氏修正”》 里 的 回复
    我对 相对论 提出了一个 修正,名为 “K氏修正”
    input 只读不能修改
    获取父iframe的高宽
    indexOf ie下的兼容问题
    英文单词自动换行
    textarea 限制字数
    js判断输入框的范围,并且只能输入数字
  • 原文地址:https://www.cnblogs.com/xiu619544553/p/5195035.html
Copyright © 2011-2022 走看看