[iOS] 如何在UICollectionViewCell上新增加不同的手勢?

一般來說,UICollectionViewCell上就是允許單點,也無法判斷雙點的行為,但其實這是可以做到的,可以參考官方的這篇文章

以我的做法是,我在我subclass的UICollectionViewCell初始化方法裡面,新增一個手勢:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTapGesture:)];
    tap.numberOfTapsRequired = 2;
    tap.delaysTouchesBegan = YES;
    [self addGestureRecognizer:tap];
 
重點就在於delaysTouchesBegan這上面。當你把他設定成YES,就會讓其他的手勢延遲判斷,比方說collectionView:didSelectItemAtIndexPath:是否要呼叫的判斷就不會優先執行了,他會先以這個手勢的判別為主。

這樣就可以判斷雙點擊的手勢了。

另外,我不使用touchesBegan的方法是因為他會捕捉到單點的手勢,我還沒找到讓他去判斷雙點的做法,所以直接使用UIGestureRecognizer的方式比較直接一點。

留言