为了完成手势识别,必须借助于手势识别器----UIGestureRecognizer
利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势
UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势
UITapGestureRecognizer(敲击)
UIPinchGestureRecognizer(捏合,用于缩放)
UIPanGestureRecognizer(拖拽)
UISwipeGestureRecognizer(轻扫)
UIRotationGestureRecognizer(旋转)
UILongPressGestureRecognizer(长按)
#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 给imageView添加手势
self.imageView.userInteractionEnabled = YES;
// 创建『敲击』手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
// 双击触发
// tap.numberOfTapsRequired = 2;
[self.imageView addGestureRecognizer:tap];
}
- (void)tap:(UITapGestureRecognizer *)recognizer
{
NSLog(@"敲击了");
}
@end一些代理方法://
// ViewController.m
#import "ViewController.h"
@interface ViewController ()<UIGestureRecognizerDelegate>
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// 给imageView添加手势
self.imageView.userInteractionEnabled = YES;
// 创建『敲击』手势
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
// 双击触发
// tap.numberOfTapsRequired = 2;
tap.delegate = self; // 设置代理为当前控制器
[self.imageView addGestureRecognizer:tap];
}
- (void)tap:(UITapGestureRecognizer *)recognizer
{
NSLog(@"敲击了");
}
#pragma mark - <UIGestureRecognizerDelegate>
/**
* 是否允许开始触发手势
*
* @param gestureRecognizer 手势识别器
*
* @return 返回YES可以触发,返回NO不能触发
*/
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
NSLog(@"先来到这里");
return YES;
}
/**
* 是否允许同事支持多个手势(默认不支持多个手势)
*/
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
return NO;
}
/**
* 是否允许接收手指的触摸点(通过这方法可以控制一个控件左边能点击,右边不能点击)
*/
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
CGPoint currentPoint = [touch locationInView:self.imageView];
if (currentPoint.x < self.imageView.bounds.size.width * 0.5) {
return YES;
}else{
return NO;
}
}
@end
本文介绍如何使用UIGestureRecognizer实现常见的手势识别,包括敲击、拖拽等,并通过示例代码展示了如何将手势识别器添加到UIImageView上。
3062

被折叠的 条评论
为什么被折叠?



