Этот вопрос проверяет умение отслеживать выполнение JavaScript-кода внутри WKWebView, что необходимо для синхронизации нативного и веб-интерфейсов в iOS-приложениях.
WKWebView — это компонент для отображения веб-контента в iOS-приложениях. Часто возникает необходимость выполнить в нём JavaScript-код и получить уведомление о завершении этой операции, чтобы обновить нативный интерфейс или передать данные.
Ключевой метод для этого — evaluateJavaScript(_:completionHandler:). Он принимает строку с JavaScript-кодом и замыкание (completion handler), которое вызывается после выполнения скрипта. Замыкание возвращает опциональный результат (например, значение, возвращённое скриптом) и опциональную ошибку.
let webView = WKWebView()
// ... загрузите контент в webView
let javascriptCode = "document.title;"
webView.evaluateJavaScript(javascriptCode) { (result, error) in
if let error = error {
print("Ошибка выполнения JS: \(error.localizedDescription)")
return
}
// result содержит значение, возвращённое скриптом (например, заголовок страницы)
print("JavaScript выполнен. Результат: \(result ?? 'нет данных')")
// Здесь можно обновить UI или выполнить другую логику
}Важно помнить, что метод выполняется асинхронно и работает в основном потоке, поэтому для обновления UI дополнительная диспетчеризация не требуется. Однако, если JavaScript-код выполняется долго, это может заблокировать UI, поэтому сложные операции лучше разбивать.
Вывод: Используйте evaluateJavaScript с completion handler, когда вам нужно выполнить скрипт в WKWebView и точно знать момент его завершения, например, для получения данных из веб-страницы или управления гибридным приложением.