2011-12-29 15 views
9

Tengo UIView con UITextView y UITextField como subvista. Quiero que el teclado aparezca automáticamente en la llamada textFieldShouldReturn.ConvertimeResponder de UITextView no funciona correctamente

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    [textView becomeFirstResponder]; 
    return YES; 
} 

pero esto no funciona y por alguna razón, se muestra el teclado con cursor en la línea siguiente en vista de texto. Traté de establecer texto nulo en la vista de texto, pero se llama automáticamente al método textDidChange y el cursor se mueve en una nueva línea sin texto.

enter image description here

Esta misma técnica funciona correctamente para un UITextField y también funciona bien con iOS 5.0, pero cómo solucionar este problema en IOS 4.3. Avíseme si tiene alguna alternativa también.

¿Me falta algo obvio?

+0

¿Puede mostrar más código? Además, si usa un Storyboard, creo que hay una forma de seleccionar el UITextView cuando aparece la vista por primera vez, lo que debería mostrar el teclado para que no tenga que hacerlo manualmente. –

+0

Para agregar al comentario de Kinetic, los proyectos Storyboard solo compilan correctamente para iOS 5, por lo que podría ser un problema. Si no, ¿quizás estás haciendo algo funky en tus métodos delegados UITextView? Publique más código para obtener ayuda más específica porque el bloque que publicó no parece ser el problema. – Keller

Respuesta

31

Hay un error conocido en iOS con la renuncia y convertirse en el primer respondedor dentro del mismo runloop. Pruebe lo siguiente

[textField resignFirstResponder]; 
[textView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0]; 
+1

Por cierto, no creo que tengas que llamar a resignFirstResponder antes, creo que becomeFirstResponder es suficiente. – juanjo

+0

¡Gracias, esto funcionó para mí! – c0d3Junk13

Cuestiones relacionadas