在Safari中打开链接而不是UIWebVIew?

tre*_*ure 27 uiwebview ios

我有一个UIWebView内置的应用程序UIViewController.我从Web服务加载HTML作为字符串,如下所示:

self.webView loadHTMLString:_string baseURL:nil
Run Code Online (Sandbox Code Playgroud)

是否可以在浏览器中打开此字符串中的HTML链接,而不是在我的应用程序中的UIWebView中打开?我怎样才能做到这一点?

我在UIViewController中试过这个"托管"UIWebVIew:

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
   if (navigationType == UIWebViewNavigationTypeLinkClicked) {
     [[UIApplication sharedApplication] openURL:[request URL]];
     return NO;
   }
   return YES;
}
Run Code Online (Sandbox Code Playgroud)

它似乎没有工作......

有任何想法吗?

Ste*_*ton 23

你有代表UIWebView你的UIViewController?就我所见,你的代码没有什么明显的错误,所以很可能是这样的小东西.

  • 将"<UIWebViewDelegate>"添加到类定义只是意味着您实现了协议.这并不意味着它是_is_委托,只是它_can_是.你需要`webView.delegate = self`(或者你可以在Interface Builder中这样做). (2认同)

Raj*_*ore 21

在课堂上添加..

@interface yourViewController : UIViewController
<UIWebViewDelegate>
Run Code Online (Sandbox Code Playgroud)

在View did load中添加它

- (void)viewDidLoad
{
    [description loadHTMLString:string baseURL:nil];
        description.delegate = self;
}
Run Code Online (Sandbox Code Playgroud)

在.m文件中添加此项

-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
    if ( inType == UIWebViewNavigationTypeLinkClicked ) {
        [[UIApplication sharedApplication] openURL:[inRequest URL]];
        return NO;
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

注意:

UIWebView *description;
@synthesize description;
Run Code Online (Sandbox Code Playgroud)

然后它将完美地以你应得的方式工作.. !! :)