如何重置UIGestureRecognizer?

时间:2012-02-20 12:44:26

标签: iphone ios xcode ipad ios5

我在视图中有一个子视图。该视图具有PanGestureRecognizer。 我希望用户可以在webview内放大,平移,缩小等。 但我希望,当用户到达webview的左边缘时,webView中的手势识别器将被忽略,并且只会调用视图中的PanGestureRecognizer。

嗯,我已经用这段代码完成了这个:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
float coordY = scrollView.contentOffset.y;
float correctionOffsetRightSide = scrollView.contentSize.width-webView.bounds.size.width;

  if(scrollView.contentOffset.x <= 0)
  {
    [delegate viewOnlyRecognizeItsPan];
    [scrollView setContentOffset:CGPointMake(0, coordY)];
  }

  else if (scrollView.contentOffset.x >= correctionOffsetRightSide)
  {
    [delegate viewOnlyRecognizeItsPan];
    [scrollView setContentOffset:CGPointMake(correctionOffsetRightSide, coordY)];
  }
}



-(void)viewOnlyRecognizeItsPan
{
    for (UIGestureRecognizer *gesture in [[[[arrayDeAbas objectAtIndex:currentViewTag] webView] scrollView] gestureRecognizers])
    {
        [gesture requireGestureRecognizerToFail:panRecognizer];
    }
}

“arrayDeAbas”是一个存储webview的mutableArray。

我的问题是:用户触摸按钮后,我需要重置“手势”,这样就不再需要panRecognizer失败了。 我怎么能这样呢?

EDITED: 好的,我已经找到了解决方案。而不是使用requireGestureRecognizerToFail:,我可以简单地将Enablle设置为YES或NO。

-(void)turnPanON
{
    for (UIGestureRecognizer *gesture in [[[[arrayDeAbas objectAtIndex:currentViewTag] webView] scrollView] gestureRecognizers])
    {
        gesture.enabled = NO;
    }
}

-(void)turnPanOFF;
{
   for (UIGestureRecognizer *gesture in [[[[arrayDeAbas objectAtIndex:currentViewTag] webView] scrollView] gestureRecognizers])
   {
    gesture.enabled = YES;
   }
}

0 个答案:

没有答案