給UIImageView添加點選事件
//單手單擊
UIImageView *imageview1 = [[UIImageView alloc] initWithFrame:CGRectMake(125, 50, 229, 229)];
[imageview1 setImage:[UIImage imageWithContentsOfFile:path]];
imageview1.userInteractionEnabled = YES;
UITapGestureRecognizer *singleTap1 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(buttonpress1:)];
[imageview1 addGestureRecognizer:singleTap1];
[singleTap1 release];
[myScrollView addSubview:imageview1];
[imageview1 release];
手勢recognizer
//單指單擊
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(@"雙指輕按兩下");
}
}