如何在 UIPangestureRecognizer 上禁用多点触控?

How to disable multi touch on UIPangestureRecognizer?

我有一个 UICollectionView,我添加了 UILongPressGestureRecognizerUIPangestureRecognizer 用于长按和重新排序单元格。而且我还为所有 UICollectionViewCells 添加了 UIPanGestureRecognizer 以在右侧显示删除和几个选项。

我的问题是当我用两根手指平移两个 UICollectionViewCells 时,两个 UICollectionViewCells 都在检测平移并显示选项。 我一次只希望 UICollectionViewCell 之一检测它的 UIPangestureRecognizer。有什么解决办法吗?

任何人都可以帮我解决这个问题吗?。 提前致谢。

您可以在 collection 上自行禁用多点触控。通过制作简单的 属性。

[UICollectionView setMultipleTouchEnabled:NO];

如果由于手势视图的实施问题仍未解决,那么您可以使用TouchedFlag 保持对单元格的触摸。

您可以在

中设置
- (IBAction) panGesture:(UIPanGestureRecognizer *)gesture;

您可以将 TouchedFlag 设置为 1 而

if (gesture.state == UIGestureRecognizerStateBegan)
{
     TouchedFlag=1;
}

并在 PanGesture 结束于

时后退
if (gesture.state == UIGestureRecognizerStateEnded)
{
     TouchedFlag=0;
}

所以你的结局代码应该看起来像

- (IBAction) panGesture:(UIPanGestureRecognizer *)gesture
{

    if (gesture.state == UIGestureRecognizerStateBegan && TouchedFlag==0)
    {
        TouchedFlag=1;
        //Do your PAN openration
    }
    else if (gesture.state == UIGestureRecognizerStateBegan && TouchedFlag==1) {
        //just prompt msg to user then single view at a time allowd to PAN
    }
    else if (gesture.state == UIGestureRecognizerStateEnded) {
        TouchedFlag=0;
    }
}

你试过UIPangestureRecognizer的minimumNumberOfTouches / maximumNumberOfTouches属性吗?