目标c在Safari中从UIWebView打开链接

时间:2011-05-05 15:05:19

标签: iphone objective-c ios4 uiwebview uiwebviewdelegate

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

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

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

我不想显示在articleWebView对象中加载的整个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的委托有问题吗?

1 个答案:

答案 0 :(得分:1)

我注意到你发布后没有设置“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;