2017-11-01 8 views
0

Safariでは、フォームをリロードしようとすると警告が表示されますが、WKWebViewはリロード時に警告を表示しません。WKWebViewで "フォームを再度送信しますか?"

「フォームをもう一度送信しますか?」を実装するにはどうすればよいですか?

enter image description here

答えて

2

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 
    } 
} 
2

あなたは簡単に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) 

あなたが機能としてこれを行うことができますし、ページを更新するたび、あなたはそれを呼び出すことができます。

+0

ありがとうございます!そして、私が送信されたフォームをリロードしようとしているときを知りたいと思います。 – yoneapp

+0

ユーザが例えば「リロードボタン」を押してWebViewをリロードしているときにアラートメッセージを表示するたびに機能することができます。 「webView.reload()」のようなWebViewのコンセントからwebViewをリロードするだけで、そのコード行の下に上記の警告機能を追加することができます。 –

+0

ユーザーがフォームなどを再読み込みしようとしているかどうかを知りたいです。この警告は、Formの二重送信を防ぎます。 – yoneapp

関連する問題