2011-08-18 22 views
7

मैं अपने दृश्य के रूप में UIWebView के साथ UIViewController प्रस्तुत कर रहा हूं। जब उपयोगकर्ता उस पर रद्द बटन हिट करता है तो मैं UIWebView को कैसे खारिज कर सकता हूं?UIWebView को कैसे रद्द करें?

एक विचार मेरे पास है http://cancel को रद्द बटन लिंक करने के लिए और उसके बाद जाँच में

- (void)webViewDidStartLoad:(UIWebView *)webView 

तो webView.request.URL.host isEqualToString:@"cancel", तो दृश्य नियंत्रक खारिज है।

क्या मेजबान में इसमें कोई डॉट होना चाहिए, उदाहरण के लिए, "cancel.com"?

उत्तर

8

आप सही रास्ते पर हैं, लेकिन आप दृष्टिकोण थोड़ा दूर हैं। आपको इसकी आवश्यकता नहीं है या यह एक HTTP यूआरएल होना चाहता है। अपना यूआरएल cancel: बनाएं।

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

फिर अपने वेब व्यू प्रतिनिधि में 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:' के बजाय बस पोस्ट करने के बाद विचार किया लेकिन सवाल को संपादित नहीं किया। यूआरएल की योजना का उपयोग करना बेहतर है। मिठाई! – ma11hew28

+0

यह वही है जो मैं ढूंढ रहा हूं। बहुत बढ़िया जवाब। धन्यवाद! – venj

6

यदि आप किसी वेब व्यू में लोड करना बंद करना चाहते हैं या केवल उस मोडल व्यू कंट्रोलर को खारिज करना चाहते हैं, तो यह पूरी तरह स्पष्ट नहीं है।

लोड हो रहा है रोकने के लिए:

[webView stopLoading]; 

दृश्य नियंत्रक खारिज करने के लिए:

[self dismissModalViewControllerAnimated:YES]; 

मत भूलना सेट करने के लिए वेब दृश्य के delegate नहीं के बराबर करने के लिए इससे पहले कि आप इसे जारी।

+0

+1 क्योंकि यह वही करने का बेहतर तरीका है, जो भी वांछित है, दृश्य नियंत्रक को खारिज करना है। यदि दृश्य नियंत्रक को खारिज कर दिया गया है, तो वेबव्यू अभी भी पृष्ठभूमि में लोड करने का प्रयास कर रहा है, तो मैं ऐप क्रैशिंग के साथ समस्याओं में भाग गया हूं। – Sepui

संबंधित मुद्दे