iOS開發各類手勢識別

iOS開發中手勢識別有六種: ui

輕擊手勢(TapGestureRecognizer), spa

輕掃手勢 (SwipeGestureRecognizer), code

長按手勢(LongPressGestureRecognizer), orm

拖動手勢(PanGestureRecognizer), ip

捏合手勢(PinchGestureRecognizer), 開發

旋轉手勢(RotationGestureRecognizer),get

使用手勢很簡單,分爲兩步:animation

建立手勢實例。當建立手勢時,指定一個回調方法,當手勢開始,改變、或結束時,回調方法被調用。it

添加到須要識別的View中。每一個手勢只對應一個View,當屏幕觸摸在View的邊界內時,若是手勢和預約的同樣,那就會回調方法。io

1,點擊手勢(TapGestureRecognizer)

  1. 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,旋轉手勢(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;//取消形變
        }];
    }
}

4,拖動手勢(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
}


5,輕掃手勢(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)
    {
        //向右輕掃
    }
}

6,捏合手勢(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)
    {
        self.View.transform = CGAffineTransformMakeScale(gesture.scale, gesture.scale);
    }
  
}
相關文章
相關標籤/搜索