Iphone 如何禁用UIWebview水平滚动?

Iphone 如何禁用UIWebview水平滚动?,iphone,objective-c,uiwebview,scroll,Iphone,Objective C,Uiwebview,Scroll,我已尝试通过插入以下内容来禁用它: <meta name="viewport" content="width=320" /> 我的HTML字符串,以及上面的十几个变体,徒劳地希望我只是搞错了标记语法。。。但似乎没有什么能阻止UIWebView水平滚动。然而,也有一些应用程序能够做到这一点(比如MobileRSS),而且很可能,因为它们没有被拒绝,所以它们没有使用私有API。我最终设法解决了这个问题。我已经尝试设置“视口宽度”值,但没有效果。使用“溢出:隐藏”与设置视口宽度一起起

我已尝试通过插入以下内容来禁用它:

<meta name="viewport" content="width=320" />


我的HTML字符串,以及上面的十几个变体,徒劳地希望我只是搞错了标记语法。。。但似乎没有什么能阻止UIWebView水平滚动。然而,也有一些应用程序能够做到这一点(比如MobileRSS),而且很可能,因为它们没有被拒绝,所以它们没有使用私有API。

我最终设法解决了这个问题。我已经尝试设置“视口宽度”值,但没有效果。使用“溢出:隐藏”与设置视口宽度一起起作用。感谢您的回答。

您的网页需要有两个属性:1--视口元标记和2--宽度不超过320px,包括边距和填充

这是一个非常简单的HTML5框架,它应该允许垂直滚动和禁止水平滚动,包括禁止水平反弹。这也不允许缩放——它假定您的网页应该始终以1-1的比例显示给用户。如果您正在使用UIWebView显示用户界面,这将非常有用

<!doctype html>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=0" />
    <style>
        body {width:320px;margin:0;padding:0;}
    </style>
</head>
<body></body>
</html>

正文{宽度:320px;边距:0;填充:0;}

UIWebview
UIScrollview
(在iOS5上通过
webview.scrollView
和在iOS4上通过遍历子视图树并选择
UIScrollview
子视图)的委托设置为“自我”,并使用以下代码:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    [scrollView setContentOffset:CGPointMake(0, scrollView.contentOffset.y)];
}

工作完美,出于某种原因,我的HTML代码在没有任何需要的情况下水平溢出。这将修复它。

我的版本,一个常见的解决方案:

- (void)webViewDidFinishLoad:(UIWebView *)webView {

[webView.scrollView setContentSize: CGSizeMake(webView.frame.size.width, webView.scrollView.contentSize.height)];

}

如果webView包含长度大于webView的单词。你必须打破那根绳子。因此,请在div中使用下面的代码


单词包装:打断单词

Swift 5.0解决方案:

func webViewDidFinishLoad(_ webView: UIWebView) {
    webView.scrollView.contentSize = CGSize(width: webView.frame.size.width, height: webView.scrollView.contentSize.height)        
}

这段代码放在-webViewDidFinishLoad中是很重要的:而不是放在其他地方(就像我把它放在viewDidLoad中并用头撞了一会儿墙一样),我不会说这可以修复它;更像是黑客。但是嘿!如果它成功了,谁在乎呢?(由于您的内容仍然溢出,因此无法修复)