Safariでは、フォームをリロードしようとすると警告が表示されますが、WKWebViewはリロード時に警告を表示しません。WKWebViewで "フォームを再度送信しますか?"
「フォームをもう一度送信しますか?」を実装するにはどうすればよいですか?
Safariでは、フォームをリロードしようとすると警告が表示されますが、WKWebViewはリロード時に警告を表示しません。WKWebViewで "フォームを再度送信しますか?"
「フォームをもう一度送信しますか?」を実装するにはどうすればよいですか?
WKNavigationDelegate#webView(_:decidePolicyFor:decisionHandler :)。 navigationAction.navigationTypeがある場合
その後、は、ショーのアラートをformResubmitted。警告のために
それぞれ、decisionHandler(.allow)またはdecisionHandler(.cancel)を呼び出し、送信したり、ボタンのアクションをキャンセルします。
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
if case .formResubmitted = navigationAction.navigationType {
// Show alert
}
}
あなたは簡単にUIAlertControllerを作成し、アラートを追加し、それにカスタムアクションを追加することができます。あなたのケースでは例えば
:
//Create the alert using UIAlertController. Add your custom title and custom message
let alert = UIAlertController(title: "Information", message: "Are you sure you want to submit the form again", preferredStyle: .alert)
//Add custom buttons with different style
alert.addAction(UIAlertAction(title: "Submit", style: .default, handler: nil))
alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
//Present the alertView
self.presentViewController(alert, animated: true, completion: nil)
あなたが機能としてこれを行うことができますし、ページを更新するたび、あなたはそれを呼び出すことができます。
ありがとうございます!そして、私が送信されたフォームをリロードしようとしているときを知りたいと思います。 – yoneapp
ユーザが例えば「リロードボタン」を押してWebViewをリロードしているときにアラートメッセージを表示するたびに機能することができます。 「webView.reload()」のようなWebViewのコンセントからwebViewをリロードするだけで、そのコード行の下に上記の警告機能を追加することができます。 –
ユーザーがフォームなどを再読み込みしようとしているかどうかを知りたいです。この警告は、Formの二重送信を防ぎます。 – yoneapp