0

UIWebViewを含み、UIWebViewDelegateを実装するUIViewControllerサブクラスがあります。私がやりたいのは、UIWebViewで押されたリンクを作成してサファリで開くことです。
これに関する過去の質問を読みましたが、それでも機能させることができません。これが私がしたことについてです:

- (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のデリゲートに何か問題があると思いますか?

4

1 に答える 1

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;
于 2011-05-05T16:21:57.220 に答える