2010-05-14 19 views
7

में IFrame लोडिंग को निर्धारित करने के लिए कैसे करें मेरे ऐप में, मुझे यह बताने का एक तरीका चाहिए कि मेरा वेबव्यू लोड होने पर कहां समाप्त हो जाए। यह करना बहुत आसान है कि अगर सामग्री एचटीएमएल है। हालांकि, मेरा सामग्री स्रोत iFrame के अंदर जावास्क्रिप्ट है, यह UIWebView समाप्त लोड विधि को कई बार बुलाएगा। क्या वैसे भी मैं यह देखने के लिए जांच सकता हूं कि आईफ्रेम लोड हो रहा है या नहीं?UIWebView

उत्तर

7

मुझे मिली एकमात्र मूर्खतापूर्ण विधि यह है कि यह लोड करने के बारे में तीन विधियों को सुनना है, और यह लोडिंग समाप्त हो गया है (साथ ही "असफल" के बराबर), और प्रत्येक के लिए मैन्युअल रूप से गिनती बनाए रखने के लिए।

अर्थात कुछ की तरह:

int outstandingRequests; 

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    outstandingRequests++; 
} 

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

    if(outstandingRequests < 1) 
    viewLoadingPleaseWait.hidden = TRUE; 
} 

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

मैं भी आम तौर पर didFail विधि overrid को मिला है - एप्पल गलत तरीके से यह है कि रिपोर्ट करने के लिए उपयोग करता है जैसे यूट्यूब प्लेयर ने यूट्यूब वीडियो के संचालन को संभाला है। यह असफल नहीं है, यह एक "पृष्ठ एक अलग अनुप्रयोग द्वारा लोड किया गया था"।

उदा।

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

    if([error code] == NSURLErrorCancelled) 
    { 
     NSLog(@"[%@] ...webView CANCELLED loading", [self class]); 
    } 
    else if([[error domain] isEqualToString:@"WebKitErrorDomain"] 
    && [error code] == 204) 
    { 
     // no worries ... YouTube, iCal, or etc took over the page load 
    } 
} 
+0

+1 अंदर सच है,! बस एक सिर ऊपर, मैंने '- (शून्य) वेबव्यूडिडस्टार्ट लोड: (UIWebView *) में बकाया रिक्वेस्ट काउंटर को बढ़ाने के लिए समाप्त किया है, क्योंकि' क्विकस्टार्ट लोड WithRequest' कम विश्वसनीय था। – Stunner

1

(यदि यह वही डोमेन है) तो आप iframe से फ़ंक्शन (पैरेंट में) को कॉल कर सकते हैं। यदि वेब दृश्य लोड कर रहा है

top.iFrameLoaded(); 
0

कहता हूं, आप अगर सभी वेब दृश्य के फ्रेम लोड हो रहा है किया जाता है webView.isLoading जाँच करने के लिए उपयोग कर सकते हैं। जरूरी iframes की संख्या गिनती नहीं है। सीधे शब्दों में बहुत उपयोगी धन्यवाद जाँच लें कि isLoadingwebViewDidFinishLoad:

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html