【问题标题】:Scroll to anchor in webView滚动到 webView 中的锚点
【发布时间】:2016-10-24 17:37:54
【问题描述】:

我们想打开一个在视图中打开特定位置的 WebView。 因此,我们希望在显示之前滚动到锚点或跳转到它。

我们尝试在 viewWillAppear 中执行 javascript,但它不起作用。如果我们在viewDidAppear 中执行它,我们会跳转到锚点,这不是一个有效的解决方案。

WebContentView(简单的情节提要,UIView 包含一个 WebView):

class WebContentViewController: UIViewController, UIWebViewDelegate {
    @IBOutlet weak var webView: UIWebView!

    var fileName: String?
    var screenName: String?

    override func viewDidLoad() {
        super.viewDidLoad()
        webView.backgroundColor = UIColor.white

        let url = URLRequest(url: Bundle.main.url(forResource: fileName, withExtension: "html")!)
        webView.loadRequest(url);
        webView.delegate = self
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        guard let screenName = screenName else {
            return
        }

        webView.stringByEvaluatingJavaScript(from: "window.location.href = '#2-einsatz-von-google-analytics';")
    }

    override func viewDidAppear(_ animated: Bool) {
        //webView.stringByEvaluatingJavaScript(from: "window.location.href = '#2-einsatz-von-google-analytics';") //creates a jump instead of a scrole
    }
}

尝试过的解决方案和已知问题:

我们如何才能在锚点可见之前完成“平滑”滚动或跳转?

【问题讨论】:

  • this 对您的情况有用吗?

标签: javascript html ios swift uiwebview


【解决方案1】:

如果你熟悉UIScrollView,你应该知道你可以使用setContentOffset方法。默认情况下,UIWebView 有一个 scrollView 属性:

var scrollView: UIScrollView 与网页关联的滚动视图 查看。

所以,你可以做的——例如——是:

webView.scrollView.setContentOffset(CGPoint(x: 0, y: 100), animated: true)

另外,我认为你应该在webView加载完成后使用它,你可以通过实现UIWebViewDelegate - webViewDidFinishLoad来实现:

func webViewDidFinishLoad(_ webView: UIWebView) {
    webView.scrollView.setContentOffset(CGPoint(x: 0, y: 100), animated: true)
}

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 2017-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    相关资源
    最近更新 更多