如何在 UIPangestureRecognizer 上禁用多点触控?
Posted
技术标签:
【中文标题】如何在 UIPangestureRecognizer 上禁用多点触控?【英文标题】:How to disable multi touch on UIPangestureRecognizer? 【发布时间】:2015-04-15 07:26:20 【问题描述】:我有一个UICollectionView
,我添加了UILongPressGestureRecognizer
和UIPangestureRecognizer
用于长按和重新排序单元格。我还为所有UICollectionViewCells
添加了UIPanGestureRecognizer
以在右侧显示删除和几个选项。
我的问题是当我用两根手指平移两个UICollectionViewCells
时,UICollectionViewCells
都在检测平移并显示选项。
我只希望其中一个UICollectionViewCell
一次检测到它的UIPangestureRecognizer
。有什么解决办法吗?
谁能帮我解决这个问题? 提前致谢。
【问题讨论】:
【参考方案1】:你试过UIPangestureRecognizer的minimumNumberOfTouches/maximumNumberOfTouches属性吗?
【讨论】:
【参考方案2】:您可以自行禁用多点触控。通过制作简单的属性。
[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 上禁用多点触控?的主要内容,如果未能解决你的问题,请参考以下文章