我在 uipageviewcontroller 中有一个 uiwebview,我希望能够在视图中选择一些文本,因此我将 userInteractionEnabled 设置为 YES,但是当我这样做时,我失去了通过点击翻页的选项,尽管滑动仍然可以正常工作。
在 UIWebview 上捕获 UITapReconizer 并将其传递给 UIPageviewController 的最佳方法是什么?
谢谢。
我在 uipageviewcontroller 中有一个 uiwebview,我希望能够在视图中选择一些文本,因此我将 userInteractionEnabled 设置为 YES,但是当我这样做时,我失去了通过点击翻页的选项,尽管滑动仍然可以正常工作。
在 UIWebview 上捕获 UITapReconizer 并将其传递给 UIPageviewController 的最佳方法是什么?
谢谢。
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。
我已经整理好了。
我在生成 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;
}