Хорошо, после некоторого исследования и игры, изучая немного больше Swift, я нашел ответ, поэтому я решил опубликовать здесь, если кто-то еще обнаружит такую же проблему.
Навигация из WkWebView можетбыть пойманным с WKNavigationDelegate следующим образом:
extension LoginView: WKNavigationDelegate
{
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: (WKNavigationActionPolicy) -> Void) {
print(webView.url)
decisionHandler(.allow)
}
}
Однако вы не можете просто расширить исходную структуру, чтобы исходный LoginView пришлось преобразовать в класс и назначить навигационный элемент Delegate следующим образом:
final internal class LoginView: NSObject, UIViewRepresentable {
var _loginWebView: WKWebView!
func makeUIView(context: Context) -> WKWebView {
_loginWebView = WKWebView(frame: .zero)
_loginWebView.navigationDelegate = self
return _loginWebView
}
func updateUIView(_ uiView: WKWebView, context: Context) {
let request = URLRequest(url: URL(string: "mysite.com\auth?clientid=myid&redirecturi=anything.com")!)
uiView.load(request)
}
}