3

私はカスタムクラスを作成しました.UIWebViewをプログラムでロードするためのshowBlock.hとshowBlock.mのファイルは、showBlock.mの実装です

#import "showBlock.h"

@implementation showBlock;

@synthesize mainViewContObj;

- (void) showView {
    UIWebView *aWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];
    aWebView.autoresizesSubviews = YES;
    aWebView.autoresizingMask = (UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth);
    [aWebView setDelegate:[self mainViewContObj]];
    NSString *urlAddress = @"http://localhost/test/index.php";
    NSURL *url = [NSURL URLWithString:urlAddress];
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    [aWebView loadRequest:requestObj];

    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
    [[[self mainViewContObj] view] addSubview:aWebView];

}
@end

それは正常に動作しており、html コンテンツを含む index.php ファイルをロードしていますが、この html ファイルのリンクをサファリブラウザで開きたいのですが、そのためには何が必要ですか?

4

3 に答える 3

11

以下のShowBlock.mにデリゲートメソッドの実装を追加する必要があります

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request
 navigationType:(UIWebViewNavigationType)navigationType {
    // This practically disables web navigation from the webView.
    if (navigationType == UIWebViewNavigationTypeLinkClicked) {
        [[UIApplication sharedApplication] openURL:[request URL]];
        return FALSE;
    }
    return TRUE;
}
于 2012-11-08T15:22:53.350 に答える
1

UIWebViewDelegateプロトコルを実装し、を設定しaWebView.delegate = selfます。

次に、実装します

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType;

これは、リンクがクリックされたときに呼び出されます。リクエストからURLを取得します。

以下のコードを使用して、Safariでリンクを開きます。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString: @\"http://www.google.com"]];
于 2012-11-08T15:19:04.687 に答える
1

UIWebViewデリゲートで、webView:shouldStartLoadWithRequestメソッドを定義します。

- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {

    if ([[request URL] checkCondition]) 
       [[UIApplication sharedApplication] openURL:[request URL]];
        return NO;
    }
    return YES;

}

checkConditionURL を safari で開く必要があるかどうかを確認する方法です (ドメインなどに基づいて確認できます)。最も単純なケースでは、常に呼び出しますopenURL(を削除しますif)

于 2012-11-08T15:21:05.393 に答える