我找到了答案,也许有人可以解释它或提供更好的解决方案。还有一个额外的错误,我必须制定出来。
- 我确保uiwebview将委托设置为文件所有者。
我改变父视图,当它被推视图到窗体上从:
[self.navigationController pushViewController:控制器动画:YES];
到(重要的部分是320,我妨碍视线肖像):
[self.navigationController pushViewController:controller animated:YES];
controller.webView.hidden = YES;
controller.webView.frame=CGRectMake(0, 0, 320,367);
3.On web视图我加载的URL,因为我总是这样:
NSURL *url = [NSURL URLWithString:sUrl];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[webView loadRequest:requestObj];
4。在webviewdidfinishload我现在有:
if (self.interfaceOrientation ==
UIInterfaceOrientationLandscapeLeft ||
self.interfaceOrientation ==
UIInterfaceOrientationLandscapeRight) {
self.webView.frame=CGRectMake(0, 0, 480,227);
}
self.webView.hidden = NO;
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
所有这通常已经解决了我的问题,但后来我发现了GDATA网址我从YouTube服务让我真正得到解决的第二个网址。然后我猜youtube改变了他们的网址格式,所以它被转发到第三个网址。这意味着我的didfinishload代码在最终的url加载之前被调用。为了解决这个问题我补充说:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if ([[[NSString stringWithFormat:@"%@",request.URL] substringWithRange:NSMakeRange(0, 26)] isEqualToString:@"http://m.youtube.com/watch"]) {
NSString *sUrl=[NSString stringWithFormat:@"%@",request.URL];
sUrl = [sUrl stringByReplacingOccurrencesOfString:@"http://m.youtube.com/watch?" withString:@"http://m.youtube.com/#/watch?"];
NSURL *url = [NSURL URLWithString:sUrl];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:requestObj];
return NO;
}
//NSLog(@"request:%@",request.URL);
return YES;
}
这我确定会更好,但基本上我告诉它忽略了第二个网址,并让我自己改变去第三URL。