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 问题