2012-12-13 10 views
6

में काम नहीं करता है, मैं UIWebView के प्रतिनिधि द्वारा उत्पन्न की गई समस्या से बचने की कोशिश कर रहा हूं। मैं इस समस्या मेरे पास है कि यह हमेशा काम करता है नहीं करता है मेरी प्रतिनिधि कार्यान्वयनNSURLErrorDomain त्रुटि -999 को अनदेखा करना UIWebView

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

    if ([error code] == NSURLErrorCancelled) return; 
} 

में आम वैकल्पिक हल (मैं इसे इंटरनेट में कहीं भी देखा था) की है। कभी-कभी वेब लोड करता है, एक बार वेब के हिस्सों (हेडर, पाठ का एक हिस्सा ...) लोड करता है और कई बार कुछ भी लोड नहीं होता है।

क्या इसका कोई अन्य समाधान है? एक ब्राउज़र के किसी भी खुले स्रोत कार्यान्वयन की मौजूदगी जो ठीक से काम करता है?

+0

शायद आपको जांच करनी चाहिए कि लोडिंग विफल होने वाले मामलों के लिए आपको कौन सी त्रुटियां मिल रही हैं। –

+0

@PhillipMills यह हमेशा एक जैसा है, NSURLErrorDomain त्रुटि -999 – emenegro

+0

आप क्या टालने की कोशिश कर रहे हैं? असल में आपके कोड ने कुछ भी नहीं किया, फ़ंक्शन वापस कर दिया गया है इससे कोई फर्क नहीं पड़ता कि त्रुटि कोड NSURLErrorCancelled के बराबर है या नहीं। – howanghk

उत्तर

10

एप्पल डॉक्स से:

NSURLErrorCancelled (-999)

"वापस किया गया जब यह एक लोड हो रहा है पर एक कार्रवाई को रद्द करता है एक अतुल्यकालिक लोड करना रद्द किया जाता है जब एक वेब किट ढांचे प्रतिनिधि इस त्रुटि प्राप्त होगा। संसाधन। नोट करें कि डाउनलोड रद्द होने पर NSRLConnection या NSURLDownload प्रतिनिधि को यह त्रुटि प्राप्त नहीं होगी। "

तो, ऐसा होने का सबसे संभावित मामला आपके लिए एक अनुरोध लोड करना है और फिर दूसरा (या एक ही), पहले व्यक्ति को पूरा होने से पहले। ऐसा हो सकता है। उदाहरण के लिए, यदि आप (या loadHTMLString) को viewDidAppear: जैसी विधि में कॉल करते हैं जिसे कई बार कहा जा सकता है। यह भी बताया गया है कि यदि आप UIWebView में 2 लिंक तुरंत टैप करते हैं।

तो, सामान्य सुझाव यह समीक्षा करना है कि आप loadRequest (या loadHTMLString) कहां और कहां कॉल करते हैं, और संभवतः कुछ कोड प्रदान करते हैं।

आदेश में इस का निवारण करने के लिए, मैं अपने वेब दृश्य प्रतिनिधि के लिए निम्न निशान जोड़ने के लिए सुझाव है:

- (void)webViewDidStartLoad:(UIWebView *)webView { 
     NSLog(@"Starting to download request: %@", [webView.request.URL absoluteString]); 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
     NSLog(@"Finished downloading request: %@", [webView.request.URL absoluteString]); 
} 

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

    if ([error code] == NSURLErrorCancelled) 
     NSLog(@"Canceled request: %@", [webView.request.URL absoluteString]); 
} 

आप उत्पादन का निरीक्षण किया, तो आप और अधिक स्पष्ट रूप क्या चल रहा है देखना चाहिए। यदि आप आउटपुट पेस्ट करते हैं, तो हम कोशिश कर सकते हैं और आगे की मदद कर सकते हैं।

2

NSRLConnection या UIWebView के साथ काम करते समय अधिकांश समय, यह त्रुटि टाइमआउट के कारण होती है। वास्तव में आपका कोड नहीं हो सकता है, लेकिन आपकी कनेक्टिविटी।