提供一下三种方法参考:
方法一:
//单击事件
-(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];
}