scrollViewDidScroll не работает с WKWebView Swift - PullRequest
0 голосов
/ 29 июня 2019

Я пытаюсь добавить тень к моей (пользовательской) навигационной панели, когда пользователь прокручивает, используя scrollViewDidScroll, но ничего не делает.У меня такой же точный код на другом контроллере представления, но он имеет tableView вместо WKWebView и работает нормально.

Я попытался добавить webView.scrollView.delegate = self, но у меня просто появляется ошибка.

Мой код:

class ViewController: UIViewController {

    @IBOutlet weak var webView: WKWebView!
    @IBOutlet weak var navBar: UIView!

    override func viewDidLoad() {
        super.viewDidLoad()
        addShadow()
        loadHtmlFile()
    }

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let navigationBar = navBar
        let offset = scrollView.contentOffset.y / 10
        if offset > 1.5 {
            navigationBar?.layer.shadowOpacity = 0.15
        } else {
            navigationBar?.layer.shadowOpacity = Float(((3 * offset) / 20)/1.5)
        }
        print(offset)
    }

    func addShadow() {
        navBar.layer.shadowColor = UIColor.black.cgColor
        navBar.layer.shadowOffset = CGSize(width: 0, height: 2.0)
        navBar.layer.shadowRadius = 6.0
        navBar.layer.masksToBounds = false
    }

}

1 Ответ

1 голос
/ 29 июня 2019

Я пытался добавить webView.scrollView.delegate = self, но я просто получаю сообщение об ошибке.

Вы не сообщили, что это за ошибка.Однако я подозреваю, что вы не объявили свой контроллер представления как соответствующий UIScrollViewDelegate, что вызвало ошибку времени компиляции при попытке установить self в качестве делегата представления прокрутки.

ИзменитьВаше объявление контроллера представления к этому:

class ViewController: UIViewController, UIScrollViewDelegate {
...