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

Dha*_*esh 4 uiwebview horizontal-scrolling swift

我有一个简单的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)
Run Code Online (Sandbox Code Playgroud)

当我将此请求加载到webView时,它加载完全正常,但是当它完全加载时当我从左侧和右侧滚动它时,它会像这样水平滚动:

在此输入图像描述

在此输入图像描述

我不希望以这种方式滚动它我只想要它垂直滚动有没有办法在swift我在互联网上搜索但只找到objective-c的解决方案我尝试在swift但不工作.

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

Swa*_*nan 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)
    }
 }
Run Code Online (Sandbox Code Playgroud)

在viewDidLoad方法中添加以下行:

 webview.scrollView.delegate = self
 webview.scrollView.showsHorizontalScrollIndicator = false
Run Code Online (Sandbox Code Playgroud)

现在这个wld在行显示错误,webview.scrollView.delegate = self所以请确保像这样添加UIScrollViewDelegate

class DetailViewController: UIViewController, UIWebViewDelegate, UIScrollViewDelegate{
Run Code Online (Sandbox Code Playgroud)

水平滚动已停止:)


Sei*_*deb 5

很抱歉这么晚才回答,但您可以通过实现 UIWebViewDelegate 方法在数据加载完成后将可滚动大小设置为 WebView 滚动视图来实现。

func webViewDidFinishLoad(_ webView: UIWebView)

你可以这样做:

快速 4:

func webViewDidFinishLoad(_ webView: UIWebView) {
    let scrollableSize = CGSize(width: view.frame.size.width, height: webView.scrollView.contentSize.height)
    self.webView?.scrollView.contentSize = scrollableSize
}
Run Code Online (Sandbox Code Playgroud)

编辑:

这里的关键是将 webView scrollView 宽度设置为您的主视图宽度,这将防止水平滚动。

PS:不要忘记采用 UIWebViewDelegate 协议

class myViewController: UIViewController,UIWebViewDelegate
Run Code Online (Sandbox Code Playgroud)

并在 viewDidLoad 中设置您的 webView 委托

webView?.delegate = self
Run Code Online (Sandbox Code Playgroud)