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

时间:2016-01-24 21:38:20

标签: ios swift wkwebview

我希望在public static void sendDBCommand(String sqlQuery) { String jdbcConnectionURL = "jdbc:oracle:thin:@localhost:1521:XE"; String userID = "javauser"; String userPASS = "javapass"; try { Connection conn = getDBConnection(jdbcConnectionURL, userID, userPASS); stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); rset = stmt.executeQuery(sqlQuery); int traverse = 0; while (rset.next()) { System.out.println(rset.getString(1) + " " + rset.getString(2)); } } catch (SQLException e) { System.out.println(e.toString()); } } 缩小/缩小时隐藏/显示UINavigationController的navigationBar。

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

UINavigationBar

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

我正在考虑拦截self.navigationController?.navigationBarHidden = true 的缩放事件。可能还有其他方式,欢迎提出任何意见。

2 个答案:

答案 0 :(得分:5)

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

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

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
    }
}

答案 1 :(得分:1)

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

self.navigationController?.hidesBarsOnSwipe = true

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