@@ -26,12 +26,17 @@ public MauiWebViewNavigationDelegate(IWebViewHandler handler)
2626 public void DidFinishNavigation ( WKWebView webView , WKNavigation navigation )
2727 {
2828 var handler = Handler ;
29+
30+ if ( handler is null || ! handler . IsConnected ( ) )
31+ return ;
32+
33+ var platformView = handler ? . PlatformView ;
2934 var virtualView = handler ? . VirtualView ;
3035
31- if ( handler == null || virtualView == null )
36+ if ( platformView is null || virtualView is null )
3237 return ;
3338
34- handler . PlatformView ? . UpdateCanGoBackForward ( handler . VirtualView ) ;
39+ platformView . UpdateCanGoBackForward ( virtualView ) ;
3540
3641 if ( webView . IsLoading )
3742 return ;
@@ -47,49 +52,67 @@ public void DidFinishNavigation(WKWebView webView, WKNavigation navigation)
4752 if ( handler is WebViewHandler webViewHandler )
4853 webViewHandler . ProcessNavigatedAsync ( url ) . FireAndForget ( ) ;
4954 else
50- handler . PlatformView ? . UpdateCanGoBackForward ( virtualView ) ;
55+ platformView . UpdateCanGoBackForward ( virtualView ) ;
5156 }
5257
5358 [ Export ( "webView:didFailNavigation:withError:" ) ]
5459 public void DidFailNavigation ( WKWebView webView , WKNavigation navigation , NSError error )
5560 {
5661 var handler = Handler ;
62+
63+ if ( handler is null || ! handler . IsConnected ( ) )
64+ return ;
65+
66+ var platformView = handler ? . PlatformView ;
5767 var virtualView = handler ? . VirtualView ;
5868
59- if ( handler == null || virtualView == null )
69+ if ( platformView is null || virtualView is null )
6070 return ;
6171
6272 var url = GetCurrentUrl ( ) ;
6373
6474 virtualView . Navigated ( _lastEvent , url , WebNavigationResult . Failure ) ;
6575
66- handler . PlatformView ? . UpdateCanGoBackForward ( virtualView ) ;
76+ platformView . UpdateCanGoBackForward ( virtualView ) ;
6777 }
6878
6979 [ Export ( "webView:didFailProvisionalNavigation:withError:" ) ]
7080 public void DidFailProvisionalNavigation ( WKWebView webView , WKNavigation navigation , NSError error )
7181 {
7282 var handler = Handler ;
83+
84+ if ( handler is null || ! handler . IsConnected ( ) )
85+ return ;
86+
87+ var platformView = handler ? . PlatformView ;
7388 var virtualView = handler ? . VirtualView ;
7489
75- if ( handler == null || virtualView == null )
90+ if ( platformView is null || virtualView is null )
7691 return ;
7792
7893 var url = GetCurrentUrl ( ) ;
7994
8095 virtualView . Navigated ( _lastEvent , url , WebNavigationResult . Failure ) ;
8196
82- handler . PlatformView ? . UpdateCanGoBackForward ( virtualView ) ;
97+ platformView . UpdateCanGoBackForward ( virtualView ) ;
8398 }
8499
85100 // https://stackoverflow.com/questions/37509990/migrating-from-uiwebview-to-wkwebview
86101 [ Export ( "webView:decidePolicyForNavigationAction:decisionHandler:" ) ]
87102 public void DecidePolicy ( WKWebView webView , WKNavigationAction navigationAction , Action < WKNavigationActionPolicy > decisionHandler )
88103 {
89104 var handler = Handler ;
105+
106+ if ( handler is null || ! handler . IsConnected ( ) )
107+ {
108+ decisionHandler . Invoke ( WKNavigationActionPolicy . Cancel ) ;
109+ return ;
110+ }
111+
112+ var platformView = handler ? . PlatformView ;
90113 var virtualView = handler ? . VirtualView ;
91114
92- if ( handler == null || virtualView == null )
115+ if ( platformView is null || virtualView is null )
93116 {
94117 decisionHandler . Invoke ( WKNavigationActionPolicy . Cancel ) ;
95118 return ;
@@ -130,7 +153,7 @@ public void DecidePolicy(WKWebView webView, WKNavigationAction navigationAction,
130153 var lastUrl = request . Url . ToString ( ) ;
131154
132155 bool cancel = virtualView . Navigating ( navEvent , lastUrl ) ;
133- handler . PlatformView ? . UpdateCanGoBackForward ( virtualView ) ;
156+ platformView . UpdateCanGoBackForward ( virtualView ) ;
134157 decisionHandler ( cancel ? WKNavigationActionPolicy . Cancel : WKNavigationActionPolicy . Allow ) ;
135158 }
136159
0 commit comments