0

我有五个视图,我已经应用它们UIPanGestureRecognizer放置在彼此之间有一定距离的位置,从顶部具有相同的 Y 轴(盒型形状)。

我正在拖动视图并在 x 轴上平移。问题是我可以通过多次触摸拖动多个视图。我想限制一次拖动一个视图。

我尝试使用UIPanGestureRecognizer属性

pan.maximumNumberOfTouches=1;

但这只是单一视图。有任何想法吗?

4

2 回答 2

1

也试试这个

假设您在 viewController 的视图中添加了所有这五个视图。然后执行以下操作;

myViewController.view.multipleTouchEnabled = NO;

这使得 mainView 只处理第一次触摸,并且只有第一次触摸会沿着层次结构向下流动(即到 subViews 和他们的 gestureRecognizers )

希望这有效。

提醒:

  1. 在包含 5 个视图的 mainView 或 mainViewController 的界面中定义它。

    @property(nonatomic,retain)UIPanGestureRecognizer *currentRecognizer;

    1. 然后应用以下代码。

-(void)on_pan_gesture:(UIPanGestureRecognizer*) panGestureRecognizer
{

if(self.currentRecognizer != nil && [self.currentRecognizer isEqual:panGestureRecognizer])

        {
            //do the task of the selected gesture recognizer
            //this recognizer will be active till the touches are not ended or cancelled.
            //hence on the first recognizer will work.
        }
        else
        {
            //if there is not currentRecognizer then set this recognizer to be current.
            self.currentRecognizer = panGestureRecognizer;
        }
    }

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.currentRecognizer = nil;
}

-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.currentRecognizer = nil;
}
于 2013-08-02T13:34:22.843 回答
0

使用手势识别器的委托方法

gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:

使其返回 NO。

于 2013-08-02T13:12:27.913 回答