提供一下三種方法參考:
方法一:
//單擊事件
-(void)fun1
{
NSLog(@"click1");
}
//雙擊事件
-(void)fun2
{
NSLog(@"click2");
}
//單擊和雙擊方法之一
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if ([[touches anyObject] tapCount] == 1) {
[self performSelector:@selector(fun1) withObject:nil afterDelay:1];
}
else if ([[touches anyObject] tapCount] ==2)
{
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(fun1) object:nil];
[self performSelector:@selector(fun2) withObject:nil afterDelay:1];
}
}
方法二:[線程]
int num = 0;
-(void)fun1
{
[NSThread sleepForTimeInterval:1];
if(num == 1)
{
NSLog(@"click 1");
}
}
-(void)fun2
{
[NSThread sleepForTimeInterval:1];
if(num == 2)
{
NSLog(@"click 2");
}
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
if([[touches anyObject] tapCount] == 1)
{
num = 1;
NSThread * thread = [[NSThread alloc] initWithTarget:self selector:@selector(fun1) object:nil];
[thread start];
}
else if([[touches anyObject] tapCount] == 2)
{
num = 2;
NSThread * thread = [[NSThread alloc] initWithTarget:self selector:@selector(fun2) object:nil];
[thread start];
}
}
方法三:[利用手勢控件本身自帶的方法]
原理:執行第二個方法的時候,取消第一次的方法操作
- (void)viewDidLoad
{
[super viewDidLoad];
//點擊事件
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fun1)];
//單點觸摸
tap.numberOfTouchesRequired = 1;
//點擊幾次,如果是1就是單擊
tap.numberOfTapsRequired = 1;
[self.view addGestureRecognizer:tap];
UITapGestureRecognizer *tap2 = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fun2)];
tap2.numberOfTapsRequired = 2;
[self.view addGestureRecognizer:tap2];
//如果滿足第二次 第一次的就取消
[tap requireGestureRecognizerToFail:tap2];
}