// 单击
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(signalTapAction:)];
// 需要触碰的次数
singleTap.numberOfTouchesRequired = 1;
// 需要点击的次数
singleTap.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:singleTap];
// 双击
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapAction:)];
doubleTap.numberOfTouchesRequired = 1;
doubleTap.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:doubleTap];
// 长按
UILongPressGestureRecognizer *longTap = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longTapAction:)];
longTap.numberOfTouchesRequired = 1;
// 最短按压持续时间
longTap.minimumPressDuration = 0.5;
[self.view addGestureRecognizer:longTap];
// 拖动
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureAction:)];
// 最少触碰次数
panGesture.minimumNumberOfTouches = 1;
// 最多触碰次数
panGesture.maximumNumberOfTouches = 1;
[self.view addGestureRecognizer:panGesture];
// 拦截双击时的单击事件。只有双击失效才算做单击
[singleTap requireGestureRecognizerToFail:doubleTap];
@selector
- (void)signalTapAction:(UITapGestureRecognizer *)tap
{
NSLog(@"单击");
}
- (void)doubleTapAction:(UITapGestureRecognizer *)tap
{
NSLog(@"双击");
}
- (void)longTapAction:(UITapGestureRecognizer *)tap
{
if (tap.state == UIGestureRecognizerStateEnded || tap.state == UIGestureRecognizerStateCancelled) {
NSLog(@"长按");
}
}
- (void)panGestureAction:(UIPanGestureRecognizer *)panGesture
{
CGPoint currentPoint = [panGesture locationInView:self.view];
switch (panGesture.state) {
case UIGestureRecognizerStateBegan:
NSLog(@"PanBegan(x=%f,y=%f)",currentPoint.x,currentPoint.y);
break;
case UIGestureRecognizerStateChanged:
NSLog(@"PanChanged(x=%f,y=%f)",currentPoint.x,currentPoint.y);
break;
case UIGestureRecognizerStateEnded:
NSLog(@"PanEnd(x=%f,y=%f)",currentPoint.x,currentPoint.y);
break;
default:
break;
}
}