html - 如何使 UIWebView 链接在 UIPopover 中打开?

标签 html ios uiwebview uipopover

我目前在 UIWebView 中加载了一个简单的 HTML 文件,文件文本中嵌入了一堆链接。我想知道是否有办法让这些链接在 UIPopover 中打开。

这些链接指向另一个 HTML 文件,因此我希望它们加载到 UIPopover 中,其中包含 UIWebView。

如果我还不够清楚我在寻找什么,请告诉我。

最佳答案

你应该看看 UIWebViewDelegate 的这个方法

- (BOOL)webView:(UIWebView *)webView
            shouldStartLoadWithRequest:(NSURLRequest *)request
                        navigationType:(UIWebViewNavigationType)navigationType

每当用户触发链接时都会调用此函数

因此,将包含 UIWebView 的 viewController 放入该 webView 的委托(delegate)中,并实现此方法。

如果有 BOOL 返回值。如果您返回“NO”,webview 本身将不会尝试处理该链接,因此您可以控制它。

(NSURLRequest *)request 为您提供实际的链接...

因此,从这里您可以使用内容 viewController 触发 UIPopover...它可以包含 UIWebView,您可以在其中加载链接数据。

(有趣的是你现在应该问这个问题,我现在正在实现类似的东西..)

更新

正如您所注意到的,这里有一个微妙之处需要观察。当您的 UIWebView 首次加载其内容时(例如在 viewDidLoad 上),将调用此委托(delegate)方法。如果在这种情况下返回 NO,则初始内容将不会加载,并且您将得到一个神秘的空白 webView。

要解决此问题,您需要考虑 navigationType 参数。基本上,如果 navigationType 为 UIWebViewNavigationTypeLinkClicked(激活链接),您只想返回“NO”。否则你想返回YES(webView应该加载它的内容)。

因此该方法的完整实现可能如下所示

-               (BOOL)webView:(UIWebView *)webView
   shouldStartLoadWithRequest:(NSURLRequest *)request
               navigationType:(UIWebViewNavigationType)navigationType
{
  BOOL result = YES;
    if (navigationType=UIWebViewNavigationTypeLinkClicked){
        [self launchPopOverWithRequest:request]
        result =  NO;
   }
   return result;
}

关于html - 如何使 UIWebView 链接在 UIPopover 中打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994432/

相关文章:

uiwebview - 在 iOS 8 上共享 NSURLCache 和 UIWebView

javascript - 带有 HTML 内容的 Angular 2 Material 工具提示

ios - 在 UIWebView iOS 8 中呈现 PDF,导致 PDF 周围出现黑色边框

html - 固定背景与顶部导航栏和滚动

ios - 无法从应用程序组 ios 中的共享容器中读取

ios - xcode llvm 5.0错误没有这样的文件或目录

iphone - tableViewCell 中的 UITapgestureRecogniser

http - UIWebView 和 HTTP Basic Auth 的问题

html - 为什么 anchor 标记中的文本不可见?

html - 制作一个单独的无边框表格类