uiwebview内部uipageviewcontroller块点击翻页

时间:2013-02-07 15:31:37

标签: ios objective-c uiwebview uigesturerecognizer uipageviewcontroller

我在uipageviewcontroller中有一个uiwebview,我希望能够在视图中选择一些文本,所以我将userInteractionEnabled设置为YES,但是当我这样做时,我放弃了通过点击翻页的选项,尽管仍然滑动工作正常。

在UIWebview上捕获UITapReconizer并将其传递给UIPageviewController的最佳方法是什么?

感谢。

2 个答案:

答案 0 :(得分:0)

UIPageviewController有一个gestureRecognizers property

我的猜测是,如果你的手势识别器和你的手势识别器 - 如果你使用它 - 不能同时动作。 你可以通过手势来处理这个问题。方法,请参阅question for handling multiple UITapGestureRecognizers,要求您的webView点按识别器失败,以便pageViewController成功点击。

像这样(未经测试)

UILongPressGestureRecognizer *yourTapGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)];

for(UIGesture *gesture in yourPageController.gestureRecognizers){
   [gesture requireGestureRecognizerToFail:yourTapGesture];
}

[pageControllerTap requireGestureRecognizerToFail:yourTapGesture];

另外,我不明白为什么你需要userInteractionEnabled,你的UIWebView占用了所有空间吗?您可以将手势附加到webView的超级视图,并使用locationInView:方法测试webView-hit。

答案 1 :(得分:0)

我已经对它进行了分类。

我为生成uiwebview的控制器添加了一个手势识别器:

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
                                             initWithTarget:self action:@selector(handleGesture:)];
    tapRecognizer.numberOfTapsRequired = 1;
    tapRecognizer.delegate = self;
    [webView addGestureRecognizer:tapRecognizer];

使用

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
    return NO;
 }

并在pageviewController中添加:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return YES;
}