iOS 同一個(gè)View識(shí)別單擊和雙擊手勢(shì)

需求:在同一個(gè)cell上響應(yīng)單擊和雙擊方法,分別進(jìn)入不同方法。
在視圖上同時(shí)識(shí)別單擊手勢(shì)和雙擊手勢(shì)的問題在于,當(dāng)檢測(cè)到一個(gè)單擊操作時(shí),無法確定是確實(shí)是一個(gè)單擊操作或者只是雙擊操作中的第一次點(diǎn)擊。解決這個(gè)問題的方法就是:在檢測(cè)到單擊時(shí),需要等一段時(shí)間等待第二次點(diǎn)擊,如果沒有第二次點(diǎn)擊,則為單擊操作;如果有第二次點(diǎn)擊,則為雙擊操作。
檢測(cè)手勢(shì)有兩種方法,一種是定制子視圖,重寫視圖從UIResponder類中繼承來的事件處理方法,touchesBegan:withEvent:等一系列方法來檢測(cè)手勢(shì);另一個(gè)方法是使用手勢(shì)識(shí)別器,即UIGestureRecognize的各種具體子類。

//在cell上添加 bgView,給bgView添加兩個(gè)手勢(shì)檢測(cè)方法     
bgView.userInteractionEnabled = YES;
UITapGestureRecognizer *singleTapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleSingleTap:)];
singleTapGesture.numberOfTapsRequired =1;
singleTapGesture.numberOfTouchesRequired  =1;
[bgView addGestureRecognizer:singleTapGesture];
           
UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(handleDoubleTap:)];
doubleTapGesture.numberOfTapsRequired =2;
doubleTapGesture.numberOfTouchesRequired =1;
[bgView addGestureRecognizer:doubleTapGesture];
//只有當(dāng)doubleTapGesture識(shí)別失敗的時(shí)候(即識(shí)別出這不是雙擊操作),singleTapGesture才能開始識(shí)別          
[singleTapGesture requireGestureRecognizerToFail:doubleTapGesture];

//兩個(gè)手勢(shì)分別響應(yīng)的方法
-(void)handleSingleTap:(UIGestureRecognizer *)sender{
//chooseNum為手勢(shì)響應(yīng)的view的tag值
   chooseNum=(int)sender.view.tag;
   CGPoint touchPoint = [sender locationInView:self];
}

-(void)handleDoubleTap:(UIGestureRecognizer *)sender{
//chooseNum為手勢(shì)響應(yīng)的cell的tag值
   chooseNum=(int)sender.view.tag;
   UITableViewCell *v = (UITableViewCell *)[[sender view] superview];
   chooseNum=v.tag;
}

參考文章地址 :
http://www.voidcn.com/blog/Dancer2015/article/p-5957064.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容