在Safari中打开WebView链接

时间:2013-03-21 00:22:02

标签: ios uiwebview uiwebviewdelegate

运行应用程序时首先加载,然后在safari中加载网页。如何在UIWebView中加载页面,并在Safari中打开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];
}

@end

1 个答案:

答案 0 :(得分:0)

第一页在Safari中加载而不是您应用中的UIWebView的原因是这行代码:

[[UIApplication sharedApplication] openURL:url];

viewDidLoad方法中删除此行。

要在Safari应用中webView加载内部建立链接,请首先将视图控制器设置为webView.delegate = self;方法中viewDidLoad的webView的委托。

然后将以下代码添加到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并在那里加载请求。任何其他未通过点击启动的请求都会加载到您的应用程序中,例如您的起始页面请求。