2016-11-05 3 views
1

Вызова window.prompt в JavaScript в WKWebView генерирует ошибку утверждения:недостаточность Утверждения в - [UIAlertController addTextFieldWithConfigurationHandler:]

Assertion failure in -[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) 
} 

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

ответ

0

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

0

Настоящий должен вызываться из viewController. Подозреваю, что это может быть с вами.

+1

Утверждение, похоже, происходит при настройке контроллера предупреждения перед вызовом 'present'. Не могли бы вы привести пример этого неудачи утверждения при попытке представить предупреждение? – matthias