ios UITapGestureRecognizer 单指单击、单指多击、多指单击、多指多击事件操作
2013-01-28 15:50
363 查看
【原文:http://jordy.easymorse.com/?p=809】
在ios开发中,需用到对于手指的不同操作,以手指点击为例:分为单指单击、单指多击、多指单击、多指多击。对于这些事件进行不同的操作处理,由于使用系统自带的方法通过判断touches不太容易处理,而且会有事件之间的冲突。
接下来,通过以UITapGestureRecognizer 手势实现此功能需求
代码如下:
ViewController.m中的viewDidLoad方法:
处理事件的方法,代码:
将相应代码复制到你的工程中即可使用,由于代码中已经有详细的解释说明,这里就不在重复解释了。
代码中只是列举了单指与双指对于单击或多击的处理,同理多指的操作需修改numberOfTouchesRequired属性,对点击的次数需修改numberOfTapsRequired属性。
对于其他手势例如UISwipeGestureRecognizer,UILongPressGestureRecognizer,UILongPressGestureRecognizer的操作使用类似处理。
在ios开发中,需用到对于手指的不同操作,以手指点击为例:分为单指单击、单指多击、多指单击、多指多击。对于这些事件进行不同的操作处理,由于使用系统自带的方法通过判断touches不太容易处理,而且会有事件之间的冲突。
接下来,通过以UITapGestureRecognizer 手势实现此功能需求
代码如下:
ViewController.m中的viewDidLoad方法:
1: //单指单击
2: UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
3: action:@selector(handleSingleFingerEvent:)];
4: singleFingerOne.numberOfTouchesRequired = 1; //手指数
5: singleFingerOne.numberOfTapsRequired = 1; //tap次数
6: singleFingerOne.delegate = self;
7:
8: //单指双击
9: UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
10: action:@selector(handleSingleFingerEvent:)];
11: singleFingerTwo.numberOfTouchesRequired = 1;
12: singleFingerTwo.numberOfTapsRequired = 2;
13: singleFingerTwo.delegate = self;
14:
15: //双指单击
16: UITapGestureRecognizer *doubleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
17: action:@selector(handleDoubleFingerEvent:)];
18: doubleFingerOne.numberOfTouchesRequired = 2;
19: doubleFingerOne.numberOfTapsRequired = 1;
20: doubleFingerOne.delegate = self;
21:
22: UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
23: action:@selector(handleDoubleFingerEvent:)];
24: doubleFingerTwo.numberOfTouchesRequired = 2;
25: doubleFingerTwo.numberOfTapsRequired = 2;
26: doubleFingerTwo.delegate = self;
27:
28: //如果不加下面的话,当单指双击时,会先调用单指单击中的处理,再调用单指双击中的处理
29: [singleFingerOne requireGestureRecognizerToFail:singleFingerTwo];
30: //同理双指亦是如此
31: [doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo];
32:
33: [self.view addGestureRecognizer:singleFingerOne];
34: [self.view addGestureRecognizer:singleFingerTwo];
35: [self.view addGestureRecognizer:doubleFingerOne];
36: [self.view addGestureRecognizer:doubleFingerTwo];
37:
38: [singleFingerOne release];
39: [singleFingerTwo release];
40: [doubleFingerOne release];
41: [doubleFingerTwo release];
处理事件的方法,代码:
1: //处理单指事件
2: - (void)handleSingleFingerEvent:(UITapGestureRecognizer *)sender
3: {
4: if (sender.numberOfTapsRequired == 1) {
5: //单指单击
6: NSLog(@"单指单击");
7:}else if(sender.numberOfTapsRequired == 2){
8: //单指双击
9: NSLog(@"单指双击");
10: }
11: }
12: //处理双指事件
13: - (void)handleDoubleFingerEvent:(UITapGestureRecognizer *)sender
14: {
15: if (sender.numberOfTapsRequired == 1) {
16: //双指单击
17: NSLog(@"双指单击");
18: }else if(sender.numberOfTapsRequired == 2){
19: //双指双击
20: NSLog(@"双指双击");
21:}
22: }
将相应代码复制到你的工程中即可使用,由于代码中已经有详细的解释说明,这里就不在重复解释了。
代码中只是列举了单指与双指对于单击或多击的处理,同理多指的操作需修改numberOfTouchesRequired属性,对点击的次数需修改numberOfTapsRequired属性。
对于其他手势例如UISwipeGestureRecognizer,UILongPressGestureRecognizer,UILongPressGestureRecognizer的操作使用类似处理。
相关文章推荐
- ios UITapGestureRecognizer 单指单击、单指多击、多指单击、多指多击事件操作
- ios UITapGestureRecognizer 单指单击、单指多击、多指单击、多指多击事件操作
- ios UITapGestureRecognizer 单指单击、单指多击、多指单击、多指多击事件操作
- ios UITapGestureRecognizer 单指单击、单指多击、多指单击、多指多击事件操作
- ios UITapGestureRecognizer 单指单击、单指多击、多指单击、多指多击事件操作
- ios UITapGestureRecognizer 单指单击、单指多击、多指单击、多指多击事件操作
- ios UITapGestureRecognizer 单指单击、单指多击、多指单击、多指多击事件操作
- iOS 在添加了UITapGestureRecognizer的UIView上响应按钮的点击事件
- IOS UITapGestureRecognizer 遇到父view添加UIImageView的背景图片,子subview的tap事件不起作用了
- iOS UITapGestureRecognizer区分单击和双击
- 在view上加UITapGestureRecognizer,按钮不触发单击事件的处理方法
- iOS UITapGestureRecognizer区分单击和双击
- 给控件添加单击事件--UITapGestureRecognizer
- 【iOS】Button点击事件被其父视图点击手势UITapGestureRecognizer的屏蔽问题
- 控件事件iOS-手势 UITapGestureRecognizer
- IOS开发之触摸与点击事件:UITapGestureRecognizer与UIPanGestureRecognizer应用
- iOS UITapGestureRecognizer区分单击还是双击
- iOS UITapGestureRecognizer手势和UIButton 以及UITabelView点击事件冲突
- iOS-85-UILabel等控件添加手势点击事件(UITapGestureRecognizer)
- iOS 6.0之前 UITapGestureRecognizer手势和UIButton 点击事件冲突