iOS之单、双击事件

时间:2021-02-27 19:28:07

提供一下三种方法参考:

方法一:

//单击事件  
-(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];
}