UIWebBrowserView no abarca todo el UIWebView

Así que he estado intentando que este simple comportamiento funcione en mi aplicación de iPhone ahora por un time. Tengo una barra de navigation en la parte superior y una barra de tabs en la parte inferior. Estoy cargando todo mi contenido en una vista web, que quiero encajar entre los dos. Ya he publicado sobre este tema dos veces,

ambos aquí: IOS View still no se carga en la position correcta

y aquí: Configuración del contenido mediante progtwigción para llenar la pantalla entre la barra de tabs y el controller de nav

Actualmente, mi webview se ve y funciona bien en iPhone 4 y 4, el problema surge en los 5. Cuando la pantalla termina de cargar, se ve como la image aquí: http://grosh.co/screen.jpg . Esto ocurre tanto en el simulador como en los dispositivos.

Tras una inspección más detallada, descubrí que UIWebView de hecho abarca correctamente (las áreas grises que ves son la vista web). El contenido más pequeño es en realidad un UIWebBrowserView , que me cuesta encontrar información.

Tengo el código que estoy usando a continuación, así como una salida de logging para asegurar que todos los numbers sean correctos. Mis preguntas son,

1) ¿Hay una mejor manera de configurar la vista web para abarcar el área de la pantalla entre las barras superior e inferior de todos los dispositivos?

2) De lo contrario, ¿hay alguna manera de configurar el UIWebBrowser para abarcar toda la vista web?

Intenté iterar sobre las subvistas de la vista web como se describe aquí: http://normansoven.com/ios-webview/#.VHyOUr6Jnww pero nunca se vio el webBrowserView.

Teh Codez:

- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. CGFloat viewheight = self.view.bounds.size.height; NSLog(@"Height1:%f",viewheight); CGRect screenRect = [[UIScreen mainScreen] bounds]; CGFloat viewheight2 = screenRect.size.height; NSLog(@"Height2:%f",viewheight2); CGFloat height = self.view.frame.size.height; NSLog(@"Height3:%f",height); CGFloat navBarHeight = self.navigationController.navigationBar.frame.size.height; NSLog(@"NAVHeight:%f",navBarHeight); CGFloat tabBarHeight = self.tabBarController.tabBar.frame.size.height; NSLog(@"TABHeight:%f",tabBarHeight); CGFloat statusbarheight = [UIApplication shanetworkingApplication].statusBarFrame.size.height; NSLog(@"StatbarHeight:%f",statusbarheight); CGFloat spaceToRemove = navBarHeight + tabBarHeight + statusbarheight; NSLog(@"NAVHeight+TABHeight:%f",spaceToRemove); CGFloat newHeight = viewheight - spaceToRemove; NSLog(@"NewHeight:%f",newHeight); CGRect frame = CGRectMake(0 , navBarHeight + statusbarheight, self.view.frame.size.width, newHeight); self.webView = [[UIWebView alloc]initWithFrame:frame]; //self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; [self.view addSubview:self.webView]; self.webView.scalesPageToFit = true; NSURL *url = [NSURL URLWithString:@"http://example.com/finnaRoot/index.php"]; NSURLRequest *requestURL = [NSURLRequest requestWithURL:url]; [self.webView loadRequest:requestURL]; self.webView.scrollView.showsVerticalScrollIndicator = false; self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]]; self.webView.delegate = self; self.tabBarController.delegate = self; self.webView.scrollView.delegate = self; } 

Salida de logging, desde un iPhone 5s

 2014-11-26 17:19:21.184 Finna[14617:1765689] Height1:568.000000 2014-11-26 17:19:21.185 Finna[14617:1765689] Height2:568.000000 2014-11-26 17:19:21.185 Finna[14617:1765689] Height3:568.000000 2014-11-26 17:19:21.185 Finna[14617:1765689] NAVHeight:44.000000 2014-11-26 17:19:21.185 Finna[14617:1765689] TABHeight:49.000000 2014-11-26 17:19:21.185 Finna[14617:1765689] StatbarHeight:20.000000 2014-11-26 17:19:21.185 Finna[14617:1765689] NAVHeight+TABHeight:113.000000 2014-11-26 17:19:21.186 Finna[14617:1765689] NewHeight:455.000000 

Me he encontrado con el mismo problema. Y encontré una solución simple. El culpable es la propiedad UIViewController automaticallyAdjustsScrollViewInsets . UIViewController reference de UIViewController dice:

El valor pnetworkingeterminado es YES , lo que permite que el controller de vista ajuste las inserciones de la vista de desplazamiento en respuesta a las áreas de pantalla consumidas por la barra de estado, la barra de navigation y la barra de herramientas o la barra de tabs.

Significa que UIViewController agrega ese hueco superior a la vista de desplazamiento de UIWebView incluso si configura correctamente el marco de vista web o agrega restricciones de autoajuste. Para superar este comportamiento solo

Establezca NO si desea administrar los ajustes de inserción de la vista de desplazamiento, como cuando hay más de una vista de desplazamiento en la jerarquía de la vista.

"gestionar la inserción de la vista de desplazamiento se adapta a ti mismo" en nuestro context significa que no agregaremos ninguna inserción;)

mismo problema con cualquier vista de desplazamiento, es decir, espacio en blanco en la parte superior de UITextView en iOS 10 https://stackoverflow.com/search?q=automaticallyAdjustsScrollViewInsets