UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势
UITapGestureRecognizer(敲击)
UIPinchGestureRecognizer(捏合,用于缩放)
UIPanGestureRecognizer(拖拽)
UISwipeGestureRecognizer(轻扫)
UIRotationGestureRecognizer(旋转)
UILongPressGestureRecognizer(长按)
UITapGestureRecognizer(敲击)
UIPinchGestureRecognizer(捏合,用于缩放)
UIPanGestureRecognizer(拖拽)
UISwipeGestureRecognizer(轻扫)
UIRotationGestureRecognizer(旋转)
UILongPressGestureRecognizer(长按)
用法(UITapGestureRecognizer(敲击方法)举例,其余类似)
1 > 创建手势识别器对象,监听手势的触发
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapView)];
2> 设置手势识别器对象的具体属性
// 连续敲击2次
tap.numberOfTapsRequired = 2;
// 需要2根手指一起敲击
tap.numberOfTouchesRequired = 2;
3> 添加手势识别器到对应的view上
[self.iconView addGestureRecognizer:tap];
案例
1 ,创建一个ImageView,设置Interaction为可用
2,通过代理
#import "ViewController.h"
@interface ViewController () <UIGestureRecognizerDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *iconView;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[self testTap];
}
- (void)testTap
{
UIGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapView)];
tap.delegate = self;
[self.iconView addGestureRecognizer:tap];
}
#pragma mark - 代理方法
/**
* 当点击view的时候,会先调用这个方法
*/
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
CGPoint point = [touch locationInView:touch.view];
if (point.x <= self.iconView.frame.size.width * 0.5 && point.y <= self.iconView.frame.size.height * 0.5) {
NSLog(@"%@",NSStringFromCGPoint(point));
return YES;
}
return NO;
}
- (void)tapView
{
NSLog(@"-----");
}
@end<span id="transmark"></span>