原文地址:UITapGestureRecognizer
的用法作者:ShangShang |
02 |
//单指单击 |
03 |
2:
UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self |
04 |
3:
action:@selector(handleSingleFingerEvent:)]; |
05 |
4:
singleFingerOne.numberOfTouchesRequired = 1; //手指数 |
06 |
5:
singleFingerOne.numberOfTapsRequired = 1; //tap次数 |
07 |
6:
singleFingerOne.delegate = self; |
08 |
7: |
09 |
8: //单指双击 |
10 |
9:
UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self |
11 |
10:
action:@selector(handleSingleFingerEvent:)]; |
12 |
11:
singleFingerTwo.numberOfTouchesRequired = 1; |
13 |
12:
singleFingerTwo.numberOfTapsRequired = 2; |
14 |
13:
singleFingerTwo.delegate = self; |
15 |
14: |
16 |
15: //双指单击 |
17 |
16:
UITapGestureRecognizer *doubleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self |
18 |
17:
action:@selector(handleDoubleFingerEvent:)]; |
19 |
18:
doubleFingerOne.numberOfTouchesRequired = 2; |
20 |
19:
doubleFingerOne.numberOfTapsRequired = 1; |
21 |
20:
doubleFingerOne.delegate = self; |
22 |
21: |
23 |
22:
UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self |
24 |
23:
action:@selector(handleDoubleFingerEvent:)]; |
25 |
24:
doubleFingerTwo.numberOfTouchesRequired = 2; |
26 |
25:
doubleFingerTwo.numberOfTapsRequired = 2; |
27 |
26:
doubleFingerTwo.delegate = self; |
28 |
27: |
29 |
28: //如果不加下面的话,当单指双击时,会先调用单指单击中的处理,再调用单指双击中的处理 |
30 |
29:
[singleFingerOne requireGestureRecognizerToFail:singleFingerTwo]; |
31 |
30: //同理双指亦是如此 |
32 |
31:
[doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo]; |
33 |
32: |
34 |
33:
[self.view addGestureRecognizer:singleFingerOne]; |
35 |
34:
[self.view addGestureRecognizer:singleFingerTwo]; |
36 |
35:
[self.view addGestureRecognizer:doubleFingerOne]; |
37 |
36:
[self.view addGestureRecognizer:doubleFingerTwo]; |
38 |
37: |
39 |
38:
[singleFingerOne release]; |
40 |
39:
[singleFingerTwo release]; |
41 |
40:
[doubleFingerOne release]; |
42 |
41:
[doubleFingerTwo release]; |
43 |
处理事件的方法,代码: |
44 |
1: //处理单指事件 |
45 |
2:
- ( void )handleSingleFingerEvent:(UITapGestureRecognizer
*)sender |
46 |
3:
{ |
47 |
4: if (sender.numberOfTapsRequired
== 1) { |
48 |
5: //单指单击 |
49 |
6:
NSLog(@ "单指单击" ); |
50 |
7:
} else if (sender.numberOfTapsRequired
== 2){ |
51 |
8: //单指双击 |
52 |
9:
NSLog(@ "单指双击" ); |
53 |
10:
} |
54 |
11:
} |
55 |
12: //处理双指事件 |
56 |
13:
- ( void )handleDoubleFingerEvent:(UITapGestureRecognizer
*)sender |
57 |
14:
{ |
58 |
15: if (sender.numberOfTapsRequired
== 1) { |
59 |
16: //双指单击 |
60 |
17:
NSLog(@ "双指单击" ); |
61 |
18:
} else if (sender.numberOfTapsRequired
== 2){ |
62 |
19: //双指双击 |
63 |
20:
NSLog(@ "双指双击" ); |
64 |
21:
} |
65 |
22:
} |
66 |
将相应代码复制到你的工程中即可使用,由于代码中已经有详细的解释说明,这里就不在重复解释了。 |
67 |
代码中只是列举了单指与双指对于单击或多击的处理,同理多指的操作需修改numberOfTouchesRequired属性,对点击的次数需修改numberOfTapsRequired属性。 |
68 |
对于其他手势例如UISwipeGestureRecognizer,UILongPressGestureRecognizer,UILongPressGestureRecognizer的操作使用类似处理。 |