IOS手势识别

1.响应者链的事件传递过程
(1)如果view的控制器存在,就传递给控制器;如果控制器不存在,则将其传递给它的父视图。
(2)在视图层次结构的最顶级视图,如果也不能处理收到的事件或消息,则其将事件或消息传递给window对象进行处理。
(3)如果window对象也不处理,则其将事件或消息传递给UIApplication对象。
(4)如果UIApplication也不能处理该事件或消息,则将其丢弃。

2. UIGestureRecognizer
如果想监听一个view上面的触摸事件,之前的做法是:
(1)自定义一个view。
(2)实现view的touches方法,在方法内部实现具体处理代码。
通过touches方法监听view触摸事件,有很明显的几个缺点:
(1)必须得自定义view。
(2)由于是在view内部的touches方法中监听触摸事件,因此默认情况下,无法让其他外界对象监听view的触摸事件。
(3)不容易区分用户的具体手势行为。
iOS 3.2之后,苹果推出了手势识别功能(Gesture Recognizer),在触摸事件处理方面,大大简化了开发者的开发难度。
为了完成手势识别,必须借助于手势识别器----UIGestureRecognizer,利用UIGestureRecognizer,能轻松识别用户在某个view上面做的一些常见手势,
UIGestureRecognizer是一个抽象类,定义了所有手势的基本行为,使用它的子类才能处理具体的手势:
(1)UITapGestureRecognizer(敲击)

(2)UIPinchGestureRecognizer(捏合,用于缩放)

(3)UIPanGestureRecognizer(拖拽)

(4)UISwipeGestureRecognizer(轻扫)

(5)UIRotationGestureRecognizer(旋转)

(6)UILongPressGestureRecognizer(长按)

代码:为一个view添加一个事件(两个手指点击两次才会触发)

#import "ViewController.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIView *grayView;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
    tap.numberOfTapsRequired = 2;// 设置点击次数:默认为1
    tap.numberOfTouchesRequired = 2; // 设置点击的手指个数
    [self.grayView addGestureRecognizer:tap];

}

- (void)tap:(UITapGestureRecognizer *)tapGesture
{
    NSLog(@"用两个手指点击了两次");
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值