基本URL在WebView中不起作用

时间:2014-11-21 11:49:18

标签: ios cocoa webview

我正在学习WebView 当我做像

这样的事情
NSString *url = @"www.google.com";
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];

失败了。
但是当我在标准浏览器中输入www.google.com(甚至是google.com)时,它运行正常。

我还注意到,加载页面后,标准浏览器中的网址文字字段会将链接从www.google.com更改为https:// www. google.co.in/?gws_rd=ssl

在上面的代码中,当我设置NSString *url = @"https://www.google.co.in/?gws_rd=ssl"时,它可以正常工作

那么我该如何实现我的WebView视图,以便if应该像标准浏览器一样工作呢?

2 个答案:

答案 0 :(得分:1)

UIWebView在启动请求时始终需要http或https,如果您单击webView中的链接,它将自行处理它。所以这是如何处理它:

- (void)viewDidLoad
{
    [super viewDidLoad];

    UITextField *addressBar = [[UITextField alloc] init];
    [addressBar setDelegate:self];

    [self loadRequestFromString:@"www.google.com"];
}

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [self loadRequestFromString:textField.text];
    [textField resignFirstResponder];
    return YES;
}

- (void)loadRequestFromString:(NSString *)urlString
{
    NSURL *webpageUrl;
    if ([urlString hasPrefix:@"http://"] || [urlString hasPrefix:@"https://"]) {
        webpageUrl = [NSURL URLWithString:urlString];
    } else if ([urlString containsString:@" "] || ![urlString containsString:@"."]) {
        webpageUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://www.google.com/search?q=%@", [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]];
    } else {
        webpageUrl = [NSURL URLWithString:[NSString stringWithFormat:@"http://%@", urlString]];
    }

    NSURLRequest *urlRequest = [NSURLRequest requestWithURL:webpageUrl];
    [_webView loadRequest:urlRequest];
}

答案 1 :(得分:0)

要在UIWebView中打开任何URL,您应该添加带协议的URL 例如@" http://www.google.com"。

[NSURL URLWithString:@"http://www.google.com"];

然后它会起作用。