我有一个简单的webView
喜欢:
@IBOutlet weak var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let url = "https://developer.apple.com/library/mac/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_456"
let requestURL = NSURL(string:url)
let request = NSURLRequest(URL: requestURL!)
webView.loadRequest(request)
当我将此请求加载到webView时,它加载完全正常,但是当它完全加载时当我从左侧和右侧滚动它时,它会像这样水平滚动:
我不想以这种方式滚动它我只想让它垂直滚动有没有办法在swift中我在Internet上搜索但是只找到了objective-c的解决方案而我在swift中尝试这个但是没有工作
请为我提供任何解决方案。
答案 0 :(得分:8)
更新Swift 4
将这两个方法添加到您的UIViewController中:
func webViewDidFinishLoad(_ webView: UIWebView) {
self.webView.scrollView.showsHorizontalScrollIndicator = false
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
if (scrollView.contentOffset.x > 0){
scrollView.contentOffset = CGPoint(x: 0, y: scrollView.contentOffset.y)
}
}
在viewDidLoad方法中添加以下行:
webview.scrollView.delegate = self
webview.scrollView.showsHorizontalScrollIndicator = false
现在这个wld在行webview.scrollView.delegate = self
显示错误,所以请确保你添加UIScrollViewDelegate
class DetailViewController: UIViewController, UIWebViewDelegate, UIScrollViewDelegate{
水平滚动停止了:)
答案 1 :(得分:3)
很抱歉这么晚回答你可以通过实现UIWebViewDelegate方法完成数据加载后将可滚动大小设置为WebView scrollview来实现这一点。
func webViewDidFinishLoad(_ webView:UIWebView)
你可以这样做:
SWIFT 4:
func webViewDidFinishLoad(_ webView: UIWebView) {
let scrollableSize = CGSize(width: view.frame.size.width, height: webView.scrollView.contentSize.height)
self.webView?.scrollView.contentSize = scrollableSize
}
修改强>
这里的关键是将webView scrollView宽度设置为主视图宽度,这将阻止水平滚动。
PS:不要忘记采用UIWebViewDelegate协议
class myViewController: UIViewController,UIWebViewDelegate
并在viewDidLoad中设置您的webView委托
webView?.delegate = self
答案 2 :(得分:0)
如果您来这里是想找一种方法让它像我一样完全不滚动(水平或垂直),这里有一个适用于 Swift 5 中的 WKWebView 的答案:
webView.scrollView.isScrollEnabled = false