2011-05-05 130 views
0

我有一個包含UIWebView並實現UIWebViewDelegate的UIViewController子類。我想要做的是使UIWebView中的鏈接按下在Safari中打開。
我已閱讀過有關此問題,但仍無法使其工作。 這可能是我做了什麼:objective c從safari的UIWebView打開鏈接

在我班上的- (void)viewDidLoad方法我用下面的代碼:

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

我不希望顯示在加載整個頁面的html articleWebView對象,所以在-(void)webViewDidFinishLoad:(UIWebView *)webView方法I使用此:
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

我注意到你在發佈後沒有設置「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; 
+0

感謝名單了很多的答覆。我已經嘗試過,但它給了這個問題:在 - (void)webViewDidStartLoad:(UIWebView *)webView方法我有這個:[activityIndi​​cator startAnimating]; (沒有別的,就這樣)。在 - (void)webViewDidFinishLoad:(UIWebView *)webView方法中,我所做的第一件事是[activityIndi​​cator stopAnimating]; [activityIndi​​cator release]; 當我添加你的解決方案時,我得到這個錯誤和應用程序崩潰:「[UIActivityIndi​​catorView startAnimating]:消息發送到釋放實例0x4ef10c0」。 你有什麼線索爲什麼?這是我今天整天都在瘋狂... – CrisDeBlonde 2011-05-05 16:30:09

+0

我建議你釋放UIViewController的 - (void)dealloc方法中的activityIndi​​cator,而不是 - (void)webViewDidFinishLoad:(UIWebView *)webView。您收到此錯誤是因爲在articleWebView開始加載第二個URL時,當第一個URL請求被加載時,「ActivityIndi​​cator」已經被釋放。我建議您在 - (void)dealloc方法中釋放活動指示符,並使用[activityIndi​​cator setHidden:YES]或NO來顯示和隱藏活動。 – Jimit 2011-05-05 17:40:48

相關問題