iOS开发中手势识别

    xiaoxiao2026-01-31  2

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

    轻击手势(TapGestureRecognizer),

    轻扫手势(SwipeGestureRecognizer),

    长按手势(LongPressGestureRecognizer),

    拖动手势(PanGestureRecognizer),

    捏合手势(PinchGestureRecognizer),

    旋转手势(RotationGestureRecognizer),

    1,轻击手势(TapGestureRecognizer)

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

    tapGesture.numberOfTapsRequired=1;//点击次数

    tapGesture.numberOfTouchesRequired=1;//点击手指数

    [self.viewaddGestureRecognizer:tapGesture];

    //轻击手势触发方法

    -(void)tapGesture:(UITapGestureRecognizer*)sender

    {

    //yourcode

    }

    2,长按手势(LongPressGestureRecognizer)

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

    //设置长按时间

    longPressGesture.minimumPressDuration=0.5;

    [self.viewaddGestureRecognizer:longPressGesture];

    //长按手势触发方法

    -(void)longPressGesture:(id)sender

    {

    UILongPressGestureRecognizer*longPress=sender;

    if(longPress.state==UIGestureRecognizerStateBegan)

    {

    //yourcode

    }

    }

    说明:长按手势的常用状态如下

    开始:UIGestureRecognizerStateBegan

    改变:UIGestureRecognizerStateChanged

    结束:UIGestureRecognizerStateEnded

    取消:UIGestureRecognizerStateCancelled

    失败:UIGestureRecognizerStateFailed

    3,轻扫手势(SwipeGestureRecognizer)

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

    //设置轻扫的方向

    swipeGesture.direction=UISwipeGestureRecognizerDirectionRight;//向右

    [self.viewaddGestureRecognizer:swipeGesture];

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

    //设置轻扫的方向

    swipeGestureLeft.direction=UISwipeGestureRecognizerDirectionLeft;//向左

    [self.viewaddGestureRecognizer:swipeGestureLeft];

    //轻扫手势触发方法

    -(void)swipeGesture:(id)sender

    {

    UISwipeGestureRecognizer*swipe=sender;

    if(swipe.direction==UISwipeGestureRecognizerDirectionLeft)

    {

    //向左轻扫

    }

    if(swipe.direction==UISwipeGestureRecognizerDirectionRight)

    {

    //向右轻扫

    }

    }

    4,捏合手势(PinchGestureRecognizer)

    UIPinchGestureRecognizer*pinchGesture=[[UIPinchGestureRecognizeralloc]initWithTarget:selfaction:@selector(pinchGesture:)];

    [self.viewaddGestureRecognizer:pinchGesture];

    捏合手势触发方法

    -(void)pinchGesture:(id)sender

    {

    UIPinchGestureRecognizer*gesture=sender;

    //手势改变时

    if(gesture.state==UIGestureRecognizerStateChanged)

    {

    //捏合手势中scale属性记录的缩放比例

    _imageView.transform=CGAffineTransformMakeScale(gesture.scale,gesture.scale);

    }

    //结束后恢复

    if(gesture.state==UIGestureRecognizerStateEnded)

    {

    [UIViewanimateWithDuration:0.5animations:^{

    _imageView.transform=CGAffineTransformIdentity;//取消一切形变

    }];

    }

    }

    5,拖动手势(PanGestureRecognizer)

    UIPanGestureRecognizer*panGesture=[[UIPanGestureRecognizeralloc]initWithTarget:selfaction:@selector(panGesture:)];

    [self.viewaddGestureRecognizer:panGesture];

    //拖动手势触发方法

    -(void)panGesture:(id)sender

    {

    UIPanGestureRecognizer*panGesture=sender;

    CGPointmovePoint=[panGesturetranslationInView:self.view];

    //yourcode

    }

    6,旋转手势(RotationGestureRecognizer)

    UIRotationGestureRecognizer*rotationGesture=[[UIRotationGestureRecognizeralloc]initWithTarget:selfaction:@selector(rotationGesture:)];

    [self.viewaddGestureRecognizer:rotationGesture];

    //旋转手势触发方法

    -(void)rotationGesture:(id)sender

    {

    UIRotationGestureRecognizer*gesture=sender;

    if(gesture.state==UIGestureRecognizerStateChanged)

    {

    _imageView.transform=CGAffineTransformMakeRotation(gesture.rotation);

    }

    if(gesture.state==UIGestureRecognizerStateEnded)

    {

    [UIViewanimateWithDuration:1animations:^{

    _imageView.transform=CGAffineTransformIdentity;//取消形变

    }];

    }

    }

    相关资源:iOS开发之手势识别实例
    最新回复(0)