Ошибка подтверждения в -[UIAlertController addTextFieldWithConfigurationHandler:]

Вызов window.prompt в JavaScript внутри WKWebView генерирует ошибку утверждения:

Ошибка подтверждения в -[UIAlertController addTextFieldWithConfigurationHandler:]

Ошибка подтверждения происходит от этой функции WKUIDelegate:

func webView(_ webView: WKWebView, runJavaScriptTextInputPanelWithPrompt prompt: String, defaultText: String?, initiatedByFrame frame: WKFrameInfo,
             completionHandler: @escaping (String?) -> Void) {

    let alertController = UIAlertController(title: nil, message: prompt, preferredStyle: .actionSheet)

    alertController.addTextField { (textField) in
        textField.text = defaultText
    }

    alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { (action) in
        if let text = alertController.textFields?.first?.text {
            completionHandler(text)
        } else {
            completionHandler(defaultText)
        }
    }))

    alertController.addAction(UIAlertAction(title: "Cancel", style: .default, handler: { (action) in
        completionHandler(nil)
    }))

    present(alertController, animated: true, completion: nil)
}

Документы класса не показывают способ добавления обработчика конфигурации при добавлении текстового поля или в инициализаторе. Так как ты должен справиться с этим?

2 ответа

Попробуйте сменить стиль actionSheet в alert, Для пользователя Objective-C, который будет меняться с UIAlertControllerStyleActionSheet в UIAlertControllerStyleAlert,

Подарок должен быть вызван из viewController. Есть подозрение, что это может быть с вами.

Другие вопросы по тегам