2011-08-18 45 views
7

我模態呈現UIViewControllerUIWebView作爲其視圖。當用戶點擊取消按鈕時,我如何解僱UIWebView如何取消UIWebView?

一個想法我已經是有取消按鈕鏈接http://cancel然後檢查

- (void)webViewDidStartLoad:(UIWebView *)webView 

如果webView.request.URL.host isEqualToString:@"cancel",然後關閉該視圖控制器。

主機是否必須有一個點,例如「cancel.com」?

回答

8

你在正確的道路上,但你的方法略有偏差。您不需要或希望這是一個HTTP URL。製作您的網址cancel:

<a href="cancel:">Thing to click</a> 

然後在您的web查看委託中實施webView:shouldStartLoadWithRequest:navigationType:。像這樣(未經):

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if ([request.URL.scheme isEqualToString:@"cancel"]) { 
     [self dismissModalViewControllerAnimated:YES]; 
     return NO; 
    } 
    return YES; 
} 
+0

謝謝!我想在發佈後使​​用'-webView:shouldStartLoadWithRequest:'而不是編輯問題。使用URL的方案更好。甜! – ma11hew28

+0

這正是我正在尋找的。很好的答案。謝謝! – venj

6

如果您想要停止在Web視圖中加載或僅僅關閉包含它的模式視圖控制器,這並不完全清楚。

停止加載:

[webView stopLoading]; 

要消除視圖控制器:

[self dismissModalViewControllerAnimated:YES]; 

不要忘記設置Web視圖的delegate爲零你釋放它。

+0

+1,因爲這是更好的方式來做到這一點,即使我們只是想是關閉該視圖控制器。如果在視圖控制器關閉後,webView仍然嘗試在後臺加載,我遇到了應用程序崩潰的問題。 – Sepui