質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

632閲覧

wkwebViewでProgress barが2つ表示されてしまう

totot

総合スコア20

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/09/16 07:11

以下のコードでwebviewの初回読み込み時には、progress barが意図した動きになるのですが、webview内のリンクをふむとprogress barが2つ表示されているように見えてしまいます。
どなたかおわかりになる方はいらっしゃいませんでしょうか?

イメージ説明

Swift

1class DetailViewController: UIViewController { 2 3 private var wkWebView: WKWebView! 4 5 let progressView = UIProgressView(progressViewStyle: .default) 6 7 private var estimatedProgressObserver: NSKeyValueObservation? 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 12 setupWebView() 13 load() 14 setupProgressView() 15 setupEstimatedProgressObserver() 16 } 17 18 19 20 func setupWebView() { 21 let webConfig = WKWebViewConfiguration() 22 wkWebView = WKWebView(frame: .zero, configuration: webConfig) 23 wkWebView.uiDelegate = self 24 wkWebView.navigationDelegate = self 25 } 26 27 28 private func setupProgressView() { 29 guard let navigationBar = navigationController?.navigationBar else { return } 30 31 progressView.translatesAutoresizingMaskIntoConstraints = false 32 navigationBar.addSubview(progressView) 33 34 progressView.isHidden = true 35 36 NSLayoutConstraint.activate([ 37 progressView.leadingAnchor.constraint(equalTo: navigationBar.leadingAnchor), 38 progressView.trailingAnchor.constraint(equalTo: navigationBar.trailingAnchor), 39 40 progressView.bottomAnchor.constraint(equalTo: navigationBar.bottomAnchor), 41 progressView.heightAnchor.constraint(equalToConstant: 2.0) 42 ]) 43 } 44 45 private func setupEstimatedProgressObserver() { 46 estimatedProgressObserver = wkWebView.observe(.estimatedProgress, options: [.new]) { [weak self] webView, _ in 47 self?.progressView.progress = Float(webView.estimatedProgress) 48 } 49 } 50} 51 52 53// MARK: - WKNavigationDelegate 54extension DetailViewController: WKNavigationDelegate { 55 56 57 // 読み込み準備開始 58 func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { 59 if progressView.isHidden { 60 progressView.isHidden = false 61 } 62 63 UIView.animate(withDuration: 0.33, animations: { 64 self.progressView.alpha = 1.0 65 }) 66 print("読み込み準備開始") 67 } 68 69 // 読み込み完了 70 func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 71 UIView.animate(withDuration: 0.33, 72 animations: { 73 self.progressView.alpha = 0.0 74 }, 75 completion: { isFinished in 76 self.progressView.isHidden = isFinished 77 }) 78 print("読み込み完了") 79 } 80}

環境

Swift5
iPhone SE(2nd generation) Version 11.6 (921.9.1)
xcode 11.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問