如何收听WKWebView的放大/缩小事件



我想在WKWebView缩小/缩小时隐藏/显示UINavigationController的导航栏。

隐藏或显示UINavigationBar非常简单,如下所示:

self.navigationController?.navigationBarHidden = true

但问题是我不知道把代码放在哪里。

我正在考虑拦截WKWebView的缩放事件.可能还有其他方式,欢迎任何意见。

每个WKWebView都有一个 scrollView 属性,允许您访问 Web 视图的UIScrollView部分。 您可以使用 UIScrollViewDelegate 方法,scrollViewDidScroll在 Web 视图滚动时获取回调。

首先,设置滚动视图委托:

let webView = WKWebView(...)
webView.scrollView.delegate = self

然后,实现委托方法scrollViewDidScroll并添加逻辑以隐藏和显示导航栏:

extension YourClass: UIScrollViewDelegate {
    func scrollViewDidScroll(scrollView: UIScrollView) {
        // you can use the position of the scrollView to show and hide your nav bar here
    }
}

我找到了另一种实现它的方法:

self.navigationController?.hidesBarsOnSwipe = true

iOS 8.0 为 UINavigationController 提供了一个简单的属性,可以屏蔽一些复杂的行为。如果将任何 UINavigationController 的 hidesBarsOnSwipe 设置为 true,则 iOS 会自动向视图添加点击手势识别器,以根据需要处理隐藏(和显示)导航栏。这意味着您只需一行代码即可模仿 Safari 的导航栏行为。

最新更新