一般來說,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的方式比較直接一點。
以我的做法是,我在我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的方式比較直接一點。
留言
張貼留言