gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:10:36 25 4
gpt4 key购买 nike

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

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

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

最佳答案

你应该看看UIWebViewDelegate的这个方法

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

每当用户触发链接时都会调用此方法

所以把包含UIWebView的viewController做成那个webView的delegate,并实现这个方法。

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

(NSURLRequest *)request 给你实际的链接...

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

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

更新

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

要解决此问题,您需要考虑 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 - 如何在 UIPopover 中打开 UIWebView 链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15994432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com