2011-01-14 8 views
8

Tengo una página que se carga en un UIWebView (que toma el 100% de la pantalla) en un iPad.teclado en UIWebView muestra y luego se oculta en el foco de entrada

Cuando toco un campo de texto, la página coloca el campo de texto en el lugar correcto y el teclado comienza a aparecer, pero luego da vuelta y baja y se invoca el desenfoque en el campo de entrada.

Cuando pruebo esta misma página en Safari móvil, el teclado puede implementarse con éxito.

No puedo entender cuáles son las reglas para que el teclado se muestre correctamente y mantenerse activo = y por qué esto es diferente para uiwebview que para safari.

Toda mi investigación sobre el tema no ha dado ninguna respuesta.

+0

¿Está manejando el cambio de tamaño de la vista correctamente cuando aparece el teclado? Si no, esto podría ser una causa de comportamiento inesperado. – Paul

+0

¿cómo dimensiono la vista correctamente? Ya tengo controladores para los eventos de teclado. Simplemente no sé qué condiciones requiere el teclado para permanecer despierto ... – Jake

+3

Parece que estás cambiando/renunciando al primer respondedor en uno de tus métodos delegados webView. ¿Puedes mostrar el código para esos delegados? –

Respuesta

1

Sin tener ningún código publicado en su pregunta, yo estoy especulando que el teclado de volver a bajar sólo se produce cuando el campo de texto HTML se toca antes de la llamada final a UIWebViewDelegate webViewDidFinishLoad:

Para probar esto, ponga primero su UIWebView.delegate al UIViewController que lo posee (o cualquier objeto que posea el UIWebView). Luego implemente estos métodos de delegado.

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    NSString *urlString = request.URL.absoluteString; 
    NSLog(@"%@ with URL = %@", NSStringFromSelector(_cmd), urlString); 

    return YES; 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSString *urlString = webView.request.URL.absoluteString; 
    NSLog(@"%@ with URL = %@", NSStringFromSelector(_cmd), urlString); 
} 

ejecutar su aplicación y anote el número de veces que se llama webViewDidFinishLoad:. (Si su página web contiene varios marcos o incluye elementos como Google Analytics, se llamará varias veces).

Intente tocar el campo de texto HTML después de llamar a `webViewDidFinishLoad: 'por última vez. ¿El teclado se mantiene arriba? (Creo que sí).

Si eso funciona, luego intente obtener un toque antes de la llamada final a `webViewDidFinishLoad: '. ¿El teclado se anima pero luego retrocede?

Cuestiones relacionadas