iOS之單、雙擊事件

提供一下三種方法參考:

方法一:

//單擊事件  
-(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];  
} 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章