繁体   English   中英

目标 c 从 safari 中的 UIWebView 打开链接

[英]objective c open links from UIWebView in safari

我有一个 UIViewController 子类,其中包括一个 UIWebView 并实现 UIWebViewDelegate。 我想要做的是让在 UIWebView 中按下的链接在 safari 中打开。
我已经阅读了过去有关此问题的问题,但仍然无法使其正常工作。 这是关于我所做的事情:

在我的 class 的- (void)viewDidLoad方法中,我使用以下代码:

[[self articleWebView] setDelegate: self];  
[articleWebView loadRequest:requestObj];

我不想显示在文章WebView object 中加载的整个 html 页面,所以在-(void)webViewDidFinishLoad:(UIWebView *)webView方法中我使用这个:
NSString *content = [articleWebView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('myDivId')[0].outerHTML;"];

然后我清空(释放)articleWebView 并加载内容:

[articleWebView release]; 
articleWebView= [[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,380)];  
[articleWebView loadHTMLString:content baseURL:[NSURL URLWithString:@"http://www.mysite.gr/"]];  
self.view = articleWebView;

我尝试使用以下内容,但它不起作用

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

任何想法我错过了什么?
先感谢您。

编辑:如我所见, shouldStartLoadWithRequest 没有被调用,所以我猜我的 webView 的代表有问题吗?

我注意到您发布后没有设置“articleWebView”的委托。

尝试改用这个:

[articleWebView release]; 

articleWebView= [[UIWebView alloc] initWithFrame:CGRectMake(0,0,320,380)];  

**articleWebView.delegate = self;** 

[articleWebView loadHTMLString:content baseURL:[NSURL 
URLWithString:@"http://www.mysite.gr/"]];  

self.view = articleWebView;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM