Webview 将iOS web视图的滚动条更改为其应有的一半

Webview 将iOS web视图的滚动条更改为其应有的一半,webview,ios7,scrollbar,Webview,Ios7,Scrollbar,使用Xcode 5,iOS 7 将web视图的框架从(0、45、320、568-20-45-49)更改为(0、0、320、568-20)或将其更改回(0、0、320、568-20)后会出现问题,其superview是其容器,其中包含应用程序窗口的rootViewController的框架(0、20、320、548) 将web视图的框架更改回容器(0、45、320、568-20-45-49)时,web视图处于65到(568-49)垂直区域内,但其滚动条从65滚动到web视图的中间左右。 最后,我解

使用Xcode 5,iOS 7

将web视图的框架从(0、45、320、568-20-45-49)更改为(0、0、320、568-20)或将其更改回(0、0、320、568-20)后会出现问题,其superview是其容器,其中包含应用程序窗口的rootViewController的框架(0、20、320、548)

将web视图的框架更改回容器(0、45、320、568-20-45-49)时,web视图处于65到(568-49)垂直区域内,但其滚动条从65滚动到web视图的中间左右。

最后,我解决了这个问题:

[[[_webViewContainer webView] scrollView] setScrollIndicatorInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
每当在web视图中加载新网页时,即此UIWebViewDelegate协议方法的开始

-(BOOL)webView:shouldStartLoadWithRequest:navigationType
因此,即使打开了自动布局,我们也可以强制滚动视图(web视图的属性)为滚动指示器提供正确的滚动范围

可能原因 意外行为的原因可以通过以下方式看出:

UIEdgeInsets tempEdgeInsets;
tempEdgeInsets = [[_webView scrollView] scrollIndicatorInsets];
NSLog(@"scroll view edge insets = %f, %f, %f, %f", tempEdgeInsets.top, tempEdgeInsets.bottom, tempEdgeInsets.left, tempEdgeInsets.right);
由于自动布局的原因,每次更改web视图框架都会将
tempEdgeInsets.bottom
更改为
520