2

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

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

谢谢。

4

2 回答 2

0

UIPageviewController有财产_gestureRecognizers

我的猜测是,如果它的手势识别器和你的 - 如果你使用一个 - 不能同时行动。您可以通过手势的方法来处理它,请参阅处理多个 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。

于 2013-02-07T15:46:30.193 回答
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;
}
于 2013-02-08T08:12:21.607 回答