手势处理
在ios開發(fā)中,需用到對于手指的不同操作,以手指點擊為例:分為單指單擊、單指多擊、多指單擊、多指多擊。對于這些事件進行不同的操作處理,由于使用系統(tǒng)自帶的方法通過判斷touches不太容易處理,而且會有事件之間的沖突。
?
接下來,通過以UITapGestureRecognizer?手勢實現(xiàn)此功能需求?代碼如下:
ViewController.m中的viewDidLoad方法:
1: //單指單擊 2: UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self 3: action:@selector(handleSingleFingerEvent:)]; 4: singleFingerOne.numberOfTouchesRequired = 1; //手指數(shù) 5: singleFingerOne.numberOfTapsRequired = 1; //tap次數(shù) 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: //如果不加下面的話,當單指雙擊時,會先調(diào)用單指單擊中的處理,再調(diào)用單指雙擊中的處理 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: }將相應代碼復制到你的工程中即可使用,由于代碼中已經(jīng)有詳細的解釋說明,這里就不在重復解釋了。
代碼中只是列舉了單指與雙指對于單擊或多擊的處理,同理多指的操作需修改numberOfTouchesRequired屬性,對點擊的次數(shù)需修改numberOfTapsRequired屬性。
對于其他手勢例如UISwipeGestureRecognizer,UILongPressGestureRecognizer,UILongPressGestureRecognizer的操作使用類似處理。
轉載于:https://www.cnblogs.com/ThankForYou/archive/2012/08/31/2665829.html
總結
- 上一篇: HDU ACM 1181 变形课 (广搜
- 下一篇: Sharepoint学习笔记—Site