我在视图中有一个子视图。该视图具有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;
}
}