原文地址: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的操作使用类似处理。 |