我添加了一個滑動手勢識別器和平移姿勢識別器到相同的視圖後的衝突。這些手勢應該是相互排斥的。添加UIPanGestureRecognizer和UISwipeGestureRecognizer到同一視圖導致設置requireGestureToFail
爲了做到這一點,我添加的滑動手勢
[swipeGesture requireGestureToFail:panGesture];
約束(因爲移動手勢應該得到優先)
問題是移動手勢總是調用 - 即使在非常快速的滑動。
爲了克服此問題我給自己定下的移動手勢的委託。在代表方法中,我設置了一些代碼,如下所示:
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
// check if it is the relevant view
if (gestureRecognizer.view == self.myViewWithTwoGestures)
{
// check that it is the pan gesture
if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]])
{
UIPanGestureRecognizer *pan = (UIPanGestureRecognizer *)gestureRecognizer;
CGPoint velocity = [pan velocityInView:gestureRecognizer.view];
// added an arbitrary velocity for failure
if (ABS(velocity.y) > 100)
{
// fail if the swipe was fast enough - this should allow the swipe gesture to be invoked
return NO;
}
}
}
return YES;
}
是否有建議的速度以確保良好的行爲?是否有另一種方法來強制平移手勢失敗?
你有沒有試過' - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer'方法,'返回YES;'? – Akhilrajtr
我不想同時這就是爲什麼我在問題中寫下「獨佔」 –