uipageviewcontroller 内的 uiwebview 阻止点击翻页

Posted

技术标签:

【中文标题】uipageviewcontroller 内的 uiwebview 阻止点击翻页【英文标题】:uiwebview inside uipageviewcontroller blocks tap to turn page 【发布时间】:2013-02-07 15:31:36 【问题描述】:

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

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

谢谢。

【问题讨论】:

尝试将 webview 作为子视图放入 UIView 中,并将识别器添加到 UIView。 【参考方案1】:

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。

【讨论】:

只是为了解释一下,我希望能够在 uiwebview 中选择一些文本来共享或记录,但使用长按时出现 uimenu 的默认方式。当 uiwebview.userInteraction = NO; 时不会发生这种情况【参考方案2】:

我已经整理好了。

我已经在生成 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;

【讨论】:

以上是关于uipageviewcontroller 内的 uiwebview 阻止点击翻页的主要内容,如果未能解决你的问题,请参考以下文章

UIPageViewController 内的 UISlider

带有 UINavigationBar 的 UIPageViewController 内的 UIWebView

UIPageViewController 内的 UITableViewController,如何防止对角拖动

UIPageViewController EdgeInset 内的 UITableView 问题

uipageviewcontroller 内的 uiwebview 阻止点击翻页

无法返回 UIPageViewController 内的初始页面 ViewController