如何使用swift在webView中禁用水平滚动?

时间:2014-12-17 05:36:20

标签: swift uiwebview horizontal-scrolling

我有一个简单的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时,它加载完全正常,但是当它完全加载时当我从左侧和右侧滚动它时,它会像这样水平滚动:

enter image description here

enter image description here

我不想以这种方式滚动它我只想让它垂直滚动有没有办法在swift中我在Internet上搜索但是只找到了objective-c的解决方案而我在swift中尝试这个但是没有工作

请为我提供任何解决方案。

3 个答案:

答案 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