本身作了一個九宮格,裏面的圖標都是由多張圖片重疊構成,而後包裝成一個button來使用;ui
遇到的問題是如何給這個「button」增長點擊事件?spa
解決思路1:網友提示在該「button」上增長一個真正的透明button,這樣就能夠順利執行點擊事件了;可是本人嘗試發現,若是我調整了button的透明度後,點擊是沒有效果的!多是我操做錯誤,待再次驗證。事件
解決思路2:爲UIImageView增長手勢圖片
[ImageView addGestureRecognizer:咱們本身的手勢recognizer];get
如何建立一個手勢?看看UITapGestureRecognizer 的用法吧。it
//單指單擊 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(@"雙指雙擊"); } }