簡體   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