0

运行应用程序时,它首先加载,然后在 safari 中加载网页。我将如何使页面加载并在 safariUIWebView中打开外部链接?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 应用程序的负载中创建链接,首先在方法内部将webView视图控制器设置为 webView 的委托。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 回答