給UIImageView增加點擊事件


自己做了一個九宮格,里面的圖標都是由多張圖片重疊構成,然后包裝成一個button來使用;

遇到的問題是如何給這個“button”增加點擊事件?

解決思路1:網友提示在該“button”上增加一個真正的透明button,這樣就可以順利執行點擊事件了;但是本人嘗試發現,如果我調整了button的透明度后,點擊是沒有效果的!可能是我操作錯誤,待再次驗證。

解決思路2:為UIImageView增加手勢

[ImageView addGestureRecognizer:我們自己的手勢recognizer];

如何創建一個手勢?看看UITapGestureRecognizer 的用法吧


 //單指單擊

 UITapGestureRecognizer *singleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
 action:@selector(handleSingleFingerEvent:)];
 singleFingerOne.numberOfTouchesRequired = 1; //手指數
 singleFingerOne.numberOfTapsRequired = 1; //tap次數
 singleFingerOne.delegate= self;
 
 //單指雙擊
 UITapGestureRecognizer *singleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
 action:@selector(handleSingleFingerEvent:)];
 singleFingerTwo.numberOfTouchesRequired = 1;
 singleFingerTwo.numberOfTapsRequired = 2;
 singleFingerTwo.delegate= self;
 
 //雙指單擊
 UITapGestureRecognizer *doubleFingerOne = [[UITapGestureRecognizer alloc] initWithTarget:self
 action:@selector(handleDoubleFingerEvent:)];
 doubleFingerOne.numberOfTouchesRequired = 2;
 doubleFingerOne.numberOfTapsRequired = 1;
 doubleFingerOne.delegate= self;
 
 UITapGestureRecognizer *doubleFingerTwo = [[UITapGestureRecognizer alloc] initWithTarget:self
 action:@selector(handleDoubleFingerEvent:)];
 doubleFingerTwo.numberOfTouchesRequired = 2;
 doubleFingerTwo.numberOfTapsRequired = 2;
 doubleFingerTwo.delegate= self;
 
 //如果不加下面的話,當單指雙擊時,會先調用單指單擊中的處理,再調用單指雙擊中的處理
 [singleFingerOne requireGestureRecognizerToFail:singleFingerTwo];
 //同理雙指亦是如此
 [doubleFingerOne requireGestureRecognizerToFail:doubleFingerTwo];
 
 [self.view addGestureRecognizer:singleFingerOne];
 [self.view addGestureRecognizer:singleFingerTwo];
 [self.view addGestureRecognizer:doubleFingerOne];
 [self.view addGestureRecognizer:doubleFingerTwo];
 
 [singleFingerOne release];
 [singleFingerTwo release];
 [doubleFingerOne release];
 [doubleFingerTwo release];

處理事件的方法,代碼:

 //處理單指事件
- (void)handleSingleFingerEvent:(UITapGestureRecognizer *)sender
{
if(sender.numberOfTapsRequired == 1) {
//單指單擊
NSLog(@"單指單擊");
 }elseif(sender.numberOfTapsRequired == 2){
//單指雙擊
NSLog(@"單指雙擊");
}
 }
 //處理雙指事件
 - (void)handleDoubleFingerEvent:(UITapGestureRecognizer *)sender
 {
 if(sender.numberOfTapsRequired == 1) {
 //雙指單擊
 NSLog(@"雙指單擊");
 }elseif(sender.numberOfTapsRequired == 2){
 //雙指雙擊
 NSLog(@"雙指雙擊");
 }
 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM