WKWebView - кнопки не видны в полноэкранном режиме - PullRequest
0 голосов
/ 31 октября 2018

У меня есть ViewController с WebKit и двумя кнопками над ним. Я хочу, чтобы WebKit был полноэкранным, а кнопки - над ним.

Это код моего ViewController:

@IBOutlet weak var webview: WKWebView!

override func viewDidLoad() {
    super.viewDidLoad()
    // here I am loading URLRequest
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

override func loadView() {
    webview = WKWebView()
    webview.navigationDelegate = self
    view = webview
}

func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
    showLoading()
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    hideLoading()
}

Вот как выглядит моя раскадровка:

enter image description here

Методы showLoading () и hideLoading () обрабатывают загрузку всплывающих окон. С этим кодом кнопки не видны. Когда я удаляю функцию loadView (), кнопки видны, но методы showLoading () и hideLoading () никогда не вызываются.

Как мне добиться упомянутого поведения: полноэкранное веб-представление с кнопками и функциональными методами (showLoading () и hideLoading ())

1 Ответ

0 голосов
/ 31 октября 2018

что происходит в вашем текущем коде, вы произвольно заменяете текущий вид своим экземпляром webview, что также напрямую удаляет подпредставления текущего представления (= ваши кнопки).


вы можете либо

а)

вставить веб-просмотр напрямую:

override func loadView() {
    webview = WKWebView()
    webview.navigationDelegate = self
    view.insertSubview(webview, at: 0)
    webview.frame = view.bounds
}

или

б)

добавьте WKWebView к вашему виду в Interface Builder под вашими кнопками, затем подключите розетку и делегат (ы) из IB , и вы можете удалить loadView() реализация целиком.

...