0

アプリを実行すると、最初に読み込まれ、次にサファリで Web ページが読み込まれます。UIWebViewでページをロードし、外部リンクをwebViewサファリで開くにはどうすればよいですか?

これは webviewcontroller.m のコードの一部です -

#import "WebViewController.h"


@implementation WebViewController

@synthesize webView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
if (self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]) {
    // Initialization code
}
return self;
}

/*
 If you need to do additional setup after loading the view, override viewDidLoad. */
- (void)viewDidLoad {

NSString *urlAddress = @"url link goes here";

//Create a URL object.
NSURL *url = [NSURL URLWithString:urlAddress];
[[UIApplication sharedApplication] openURL:url];

//URL Requst Object
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

//Load the request in the UIWebView.
[webView loadRequest:requestObj];
}

@終わり

4

1 に答える 1

0

最初のページがアプリではなく Safari に読み込まれる理由は、次UIWebViewのコード行です。

[[UIApplication sharedApplication] openURL:url];

メソッドからこの行を削除しますviewDidLoad

Safari アプリでロード内にリンクを作成するには、まずビュー コントローラーをメソッド内でwebViewwebView のデリゲートとして設定します。webView.delegate = self;viewDidLoad

次に、次のコードを に追加しますviewController

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

    if (navigationType == UIWebViewNavigationTypeLinkClicked)
    {
        [[UIApplication sharedApplication] openURL:request.URL];
        return NO;
    }
    return YES;
}

webViewこのメソッドは、 がリクエストのロードを開始しようとするたびに呼び出されます。それが行うことは、リクエストがユーザーのクリックによって開始されたかどうかを確認することです。その場合は、Safari を開き、そこにリクエストをロードします。開始ページのリクエストなど、クリックによって開始されなかったその他のリクエストは、アプリケーション内に読み込まれます。

于 2013-07-09T13:57:31.310 に答える