讓我更加清楚。我有一個兼容macOS 10.8+的應用程序,但是如果用戶使用macOS 10.10+,我想要使用WKWebView
,以便爲他/她提供更好的體驗。在macOS 10.8+兼容應用程序中聲明WKWebView委託人
我創建了一個基於NSView
的類,如果用戶使用的是macOS 10.9或更低版本,應自動添加WebView
;如果使用10.10或更高版本,則應自動添加WKWebView
。當我需要聲明WKWebView
導航和UI代表時,問題就出現了。
我可以添加的WebView委託功能,沒有任何麻煩:
-(WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request;
-(void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation
request:(NSURLRequest *)request frame:(WebFrame *)frame
decisionListener:(id<WebPolicyDecisionListener>)listener;
不過,我需要聲明下面的功能,能夠控制WKWebView流程以及:
- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration
forNavigationAction:(WKNavigationAction *)navigationAction
windowFeatures:(WKWindowFeatures *)windowFeatures;
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction
decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;
然而,兩者的使用起來,WKWebView
,WKWebViewConfiguration
,WKNavigationAction
,WKWindowFeatures
和WKNavigationActionPolicy
,是不具備在MacOS的10.9及以下。
總部設在我與NSUserNotificationCenter
的經驗,我知道,如果我宣佈與這些對象的功能,它的應用程序將立即崩潰的推出在MacOS上10.8和10.9,因爲這些類不可用。我怎樣才能避免這種情況?