iOS開發(fā)中六種手勢識別

iOS開發(fā)中手勢識別有六種:

輕擊手勢(TapGestureRecognizer),

輕掃手勢 (SwipeGestureRecognizer),

長按手勢(LongPressGestureRecognizer),

拖動手勢(PanGestureRecognizer),

捏合手勢(PinchGestureRecognizer),

旋轉(zhuǎn)手勢(RotationGestureRecognizer),

1,輕擊手勢(TapGestureRecognizer)

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGesture:)];

tapGesture.numberOfTapsRequired = 1; //點(diǎn)擊次數(shù)

tapGesture.numberOfTouchesRequired = 1; //點(diǎn)擊手指數(shù)

[self.view addGestureRecognizer:tapGesture];

//輕擊手勢觸發(fā)方法

-(void)tapGesture:(UITapGestureRecognizer *)sender

{

//your code

}

2,長按手勢(LongPressGestureRecognizer)

UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressGesture:)];

//設(shè)置長按時間

longPressGesture.minimumPressDuration = 0.5;

[self.view addGestureRecognizer:longPressGesture];

//長按手勢觸發(fā)方法

-(void)longPressGesture:(id)sender

{

UILongPressGestureRecognizer *longPress = sender;

if (longPress.state == UIGestureRecognizerStateBegan)

{

//your code

}

}

說明:長按手勢的常用狀態(tài)如下

開始:UIGestureRecognizerStateBegan

改變:UIGestureRecognizerStateChanged

結(jié)束:UIGestureRecognizerStateEnded

取消:UIGestureRecognizerStateCancelled

失敗:UIGestureRecognizerStateFailed

3,輕掃手勢(SwipeGestureRecognizer)

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];

//設(shè)置輕掃的方向

swipeGesture.direction = UISwipeGestureRecognizerDirectionRight; //向右

[self.view addGestureRecognizer:swipeGesture];

UISwipeGestureRecognizer *swipeGestureLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeGesture:)];

//設(shè)置輕掃的方向

swipeGestureLeft.direction = UISwipeGestureRecognizerDirectionLeft; //向左

[self.view addGestureRecognizer:swipeGestureLeft];

//輕掃手勢觸發(fā)方法

-(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];

////捏合手勢觸發(fā)方法

-(void) pinchGesture:(id)sender

{

UIPinchGestureRecognizer *gesture = sender;

//手勢改變時

if (gesture.state == UIGestureRecognizerStateChanged)

{

//捏合手勢中scale屬性記錄的縮放比例

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

}

//結(jié)束后恢復(fù)

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];

//拖動手勢觸發(fā)方法

-(void) panGesture:(id)sender

{

UIPanGestureRecognizer *panGesture = sender;

CGPoint movePoint = [panGesture translationInView:self.view];

//your code

}

6,旋轉(zhuǎn)手勢(RotationGestureRecognizer)

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

[self.view addGestureRecognizer:rotationGesture];

//旋轉(zhuǎn)手勢觸發(fā)方法

-(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;//取消形變

}];

}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容