2011-02-12 32 views
8

我試圖移植一個iOS應用到OSX,還有一件事我不明白。 iOS的應用程序使用的UIWebView,更精確地說一個UIView的實現UIWebViewDelegate:尋找一個相當於UIWebViewDelegate的iOS應用移植到OSX

@interface Dialog : UIView <UIWebViewDelegate> { 

,並實現這三個委託方法:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request 

    navigationType:(UIWebViewNavigationType)navigationType { 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { 

有人可以給我一個提示,我怎麼能口這正常的OSX框架?我知道有web視圖,但它有4名代表,據我可以計算出來,這些都不具有委託方法聽起來像那些3.

謝謝

回答

7

對於第一個,你會可能要使用WebPolicyDelegate。而對於其他兩個,也有相應的方法WebFrameLoadDelegate

- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame 
- (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame 
7

關於iOS的UIWebViewwebView:shouldStartLoadWithRequest:navigationType:,使用OSX WebView來實現:

設置WebPolicyDelegate delegate您的WebView例如:

self.webview.policyDelegate = self; 

然後在您的代理中實施– webView:decidePolicyForNavigationAction:request:frame:decisionListener:方法:

​​
1

- (無效)web視圖:(web視圖*)web視圖 decidePolicyForNavigationAction:(的NSDictionary *)actionInformation 請求:(的NSURLRequest *)請求 幀:(WebFrame *)幀 decisionListener:(ID < WebPolicyDecisionListener>)監聽器

我用這個代替了shouldStartLoadWithRequest,這個很好用