0

使用 Xcode 5、iOS 7。

将 web 视图的框架从 (0, 45, 320, 568 - 20 - 45 - 49) 更改为 (0, 0, 320, 568 - 20) 或将其更改回来后出现问题,它的父视图是它的容器frame (0, 20, 320, 548) 到应用程序窗口的rootViewController。

当将 web view 的 frame 改回 (0, 45, 320, 568 - 20 - 45 - 49) 到它的容器时,web view 在 65 到 (​​568 - 49) 垂直区域内,但它的滚动条从 65 滚动到大约Web 视图的中间。

4

1 回答 1

0

一个解法

最后我通过给出这个来解决它:

[[[_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自动布局而产生影响。

于 2013-11-05T16:11:42.010 回答