自己做了一個九宮格,里面的圖標都是由多張圖片重疊構成,然后包裝成一個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(@"雙指雙擊");
}
}