日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手势处理

發布時間:2023/12/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手势处理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在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屬性。

對于其他手勢例如UISwipeGestureRecognizerUILongPressGestureRecognizer,UILongPressGestureRecognizer的操作使用類似處理。

轉載于:https://www.cnblogs.com/ThankForYou/archive/2012/08/31/2665829.html

總結

以上是生活随笔為你收集整理的手势处理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。