2012-08-10 6 views
9

Tengo un problema con el método didFinishLoad en UIWebView que sigue disparando. Quiero probar el Progreso estimado solution, pero desafortunadamente no sé dónde encontrar esos marcos. Estoy ejecutando Mountain Lion y estoy usando la última versión de XCode. Además, para la activación de UIWebView varias veces, ¿es la mejor manera de hacerlo o hay nuevos métodos? Parece que hay un javascript answer en SO, sin embargo, eso no funcionó para mí. Eso databa de 2009, y escuché que Apple rechaza cualquier aplicación que use una API privada. Por favor, ayúdame aquí!Cómo encontrar la última carga de UIWebView (Ready State 4)

¡Gracias a todos!

Respuesta

2

¿Qué hay de mantener seguimiento del número de solicitudes pendientes? Saqué un poco de código de prueba que parece funcionar:

@interface WebViewDelegate : NSObject<UIWebViewDelegate> 
@property (nonatomic) NSUInteger numberOfRunningRequests ; 
@end 

@implementation WebViewDelegate 

-(void)webViewDidStartLoad:(UIWebView *)webView 
{ 
    self.numberOfRunningRequests = self.numberOfRunningRequests + 1 ; 
} 

-(void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    self.numberOfRunningRequests = self.numberOfRunningRequests - 1 ; 
    if (self.numberOfRunningRequests == 0) 
    { 
     NSLog(@"done!\n") ; 
    } 
} 

@end 

@implementation AppDelegate 

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    self.window.backgroundColor = [UIColor whiteColor]; 
    [self.window makeKeyAndVisible]; 

    UIWebView * webView = [[ UIWebView alloc ] initWithFrame:self.window.bounds ] ; 
    static WebViewDelegate * delegate = nil ; 
    delegate = [[ WebViewDelegate alloc ] init ] ; 
    webView.delegate = delegate ; 

    [self.window addSubview:webView ] ; 
    NSURLRequest * request = [ NSURLRequest requestWithURL:[ NSURL URLWithString:@"http://stackoverflow.com"] ]; 
    [ webView loadRequest:request ] ; 
    return YES; 
} 

@end 

(Crear un proyecto de ejemplo Xcode y reemplazar su AppDelegate.m con esto)

+0

nice solution ! ¡Bastante interesante! –

+0

sí, agradable. esto funciona para mi –

0

Si por marcos se refiere a los archivos .h importados en el código de la página a la que se ha vinculado, here's the link para descargarlos directamente. Para obtener más ayuda, deberá elaborar más.

EDIT: Además, consulte: NSURLConnection NSURLRequest proxy for asynchronous web service calls

La respuesta ligado explica cómo NSURLRequest para solicitar una conexión y obtener diferentes devoluciones de llamada para diferentes estados de la solicitud, como - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data

+0

Básicamente es cuestión de pasar por alto los 4 carga de la vista web y hacer el estado de carga de la página estado 4 –

+0

@ chaitanya.varanasi ¿Qué quiere decir con "estado preparado 4"? –

+0

estado listo es una especie de evento basado donde la página web pasa por estados de carga hay 4 estados como tal –

Cuestiones relacionadas