はじめに
今回はgree/unity-webviewでバウンススクロールを無効化する方法を紹介したいと思います。
ちなみに基本的な使い方は前に記事を書いたので、気になる方はチェックしてみてください。
www.hanachiru-blog.com
バウンスをオフにする
バウンスをオフにするにはWebViewObject.SetScrollBounceEnabledを用います。
private void Start() { var webViewObject = new GameObject("WebViewObject").AddComponent<WebViewObject>(); // 初期化 webViewObject.Init( // NOTE: iOSでUIWebViewではなくWKWebViewを利用する(現在はほぼ必須な設定項目だと思ってもらえれば) enableWKWebView: true ); // **バウンスをオフにする** webViewObject.SetScrollBounceEnabled(false); // URLを読み込みWebViewを表示する webViewObject.SetVisibility(true); webViewObject.LoadURL("https://www.google.co.jp/"); }
仕組み
前提ですがiOS以外はバウンスしないので、サポートされてません。
github.com
内部実装的には、WKWebView.scrollView.bouncesに対して設定を行っているだけです。
- (void)setScrollBounce:(BOOL)enable { WKWebView *webView = (WKWebView *)self; webView.scrollView.bounces = enable; }
一応ScrollViewにはbouncesHorizontallyやbouncesVerticallyといった水平・垂直のバウンスを別々に設定できるのですが、gree/unity-webviewは対応してないっぽいです。(PR送っても悪くはなさそうだが、そこまで個人的に必要なさそうですし様子見)
サイドバーをなくす
ちなみにサイドバーを消すこともできます。WebViewObject.SetScrollbarsVisibilityを用いて実現します。
private void Start() { var webViewObject = new GameObject("WebViewObject").AddComponent<WebViewObject>(); // 初期化 webViewObject.Init( // NOTE: iOSでUIWebViewではなくWKWebViewを利用する(現在はほぼ必須な設定項目だと思ってもらえれば) enableWKWebView: true ); // **スクロールバーの表示をなくす** webViewObject.SetScrollbarsVisibility(false); // URLを読み込みWebViewを表示する webViewObject.SetVisibility(true); webViewObject.LoadURL("https://www.google.co.jp/"); }
仕組み
こちらの場合はiOS・Androidに対応しています。
github.com
内部実装的にはwebView.scrollView.showsHorizontalScrollIndicator/showsVerticalScrollIndicatorに対して設定しているだけです。
- (void)setScrollbarsVisibility:(BOOL)visibility { WKWebView *webView = (WKWebView *)self; webView.scrollView.showsHorizontalScrollIndicator = visibility; webView.scrollView.showsVerticalScrollIndicator = visibility; }