我正在学习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应该像标准浏览器一样工作呢?
答案 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"];
然后它会起作用。