2011-02-12 74 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,这个很好用