【发布时间】:2014-12-26 07:37:26
【问题描述】:
我有一个相当简单的场景,只有一个 UIWebView 从包中加载一个 html 文档。 webView 填充顶部布局指南下方的屏幕,并使用推荐的约束。它有两个奇怪的行为:
它从内容向下滚动开始。您可以在下面的第一张图片中看到这一点。粉色是UIWebView的颜色,html本身是白色的。
webView 的 UIScrollView 本身有些愚蠢,因为(再次:参见图片)内容一直滚动到底部,但滚动条不在 webView 的顶部;它位于内容的顶部。
内容很容易滚动到那个粉红色区域,当内容一直向上滚动时,滚动条位于 UIWebView 的底部。见第二张图片。
我意识到我可以通过编程方式设置 contentOffset,但它只在 webViewDidFinishLoad 函数中有效,然后它会导致可见的跳转,因为 webview 先绘制自己然后滚动,所以这不好。
这里是 html(空格截断):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<link href="help.css" rel="stylesheet" type="text/css" />
</head>
<body>
<h2>Frequently-asked questions</h2>
</body>
</html>
还有 CSS:
@charset "UTF-8";
body {
font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
font-size: 16px;
}
这里是 ViewController:
class HelpViewController: UIViewController, UIWebViewDelegate {
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let navController = self.navigationController
navController?.navigationBarHidden = false
}
override func viewWillAppear(animated: Bool) {
loadURL();
}
func loadURL() {
let htmlName = "support";
let url = NSBundle.mainBundle().URLForResource(htmlName, withExtension: "html")
self.webView.delegate = self;
if let goodURL = url {
let request = NSURLRequest(URL: goodURL)
self.webView.loadRequest(request)
}
}
}
似乎问题一定与 IB 中的某些东西有关,但我看不出是什么。有什么好主意吗?
提前致谢!
-戴夫
【问题讨论】:
-
这是webview的布局问题,请在Interface Builder中显示设置
-
你在滚动视图中有一个 webview 吗?如果是这样,你不需要那个,因为 webview 包含一个它自己的滚动视图,你最终会得到两个滚动视图,我认为在你的情况下不需要。
-
@JeanLuc:我在滚动视图中没有 webview。
标签: html ios uiwebview uiscrollview