2009-05-20 14 views
6

Esto es probablemente una cosa fácil de hacer, pero no puedo entenderlo - ¿cómo finalizo la edición en la vista de texto? ¿Cómo puedo hacer que el teclado desaparezca? o tengo que hacer clic fuera para que desaparezca?iPhone - Problema con UITextView

Respuesta

10

En primer lugar, una pregunta (para ser honesto) bastante simple como esta me hace preguntarme si ha intentado leer la documentación o buscar en Internet.

La búsqueda de "Apple documentación UITextView" le proporciona this link en la documentación de la clase. Del mismo modo, here is la documentación para el UITextViewDelegate.

La búsqueda de "UITextView simple example" le ofrece este useful example.

Buscando "UITextView descartar el teclado", el primer hit parece answer your question exactly. (Aunque descarta el teclado en una tecla de retorno, que puede no ser lo que desea) (Editar - parece que de su segundo comentario es exactamente lo que quiere)

P.S. Las personas de arriba son correctas, aunque un poco escuetas (comprensiblemente). Debe implementar un UITextViewDelegate. En ese delegado, si desea ocultar el teclado en una clave de retorno, implemente shouldChangeTextInRange, busque un @ "\ n" y renuncie al primer respondedor si lo obtiene. De forma alternativa, agregue un botón "Edición hecha" a su UI, y renuncie al primer respondedor si el usuario lo presiona.

+0

sí, google.com -> http://iphonedevelopertips.com/cocoa/how-to- dismiss-the-keyboard-when-using-a-uitextview.html – oberbaum

+3

¡SO está lleno de "preguntas bastante simples [s]" y gracias a Dios por eso! –

2

Muy fácil:

[myTextField resignFirstResponder]; 

hará el truco.

+3

TextView, no textField – Unreality

0
[yourTextField resignFirstResponder]; 

hará que el teclado desaparezca y la edición termine.

+3

TextView, no textField – Unreality

2

Una forma de finalizar la edición, tocar fuera de textView, no es del todo trivial. Selección de otros puntos de vista de texto o campos de texto o la activación de un control de la navegación se disparará ...

- (void)textViewDidEndEditing:(UITextView *)textView 

... en cualquier objeto que haya designado como delegado del Textview. Puede desencadenar este mismo llamando ...

- (BOOL)endEditing:(BOOL)force 

... en la vista que contiene el campo de texto.

Supongamos que tengo una UITextView dentro de una UITableViewCell (dentro de una UITable). Quiero permitir que la edición termine tocando la tabla. Podría hacer esto:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapTable)]; 
    [[self tableView] addGestureRecognizer:tapRecognizer]; 
    [tapRecognizer release]; 
} 

- (void)didTapTable 
{ 
    [[self tableView] endEditing:YES]; 
} 

Ahora cada vez que toco mi mesa, termino de editar. Y, como otros han dicho, en textViewDidEndEditing Debería asegúrese de llamar [textView resignFirstResponder];

+0

Creo que endEditing llamará a resignFirstResponder en textView. Lo bueno de endEditing es que no tienes que saber qué textView está siendo editado actualmente. endEditing lo encontrará para usted y cerrará el teclado. De los documentos. "Este método examina la vista actual y su jerarquía de subvista para el campo de texto que actualmente es el primer respondedor.Si encuentra uno, solicita que el campo de texto se resigne como primer respondedor. Si el parámetro force se establece en SÍ, el campo de texto nunca se pregunta; se ve obligado a renunciar ". – JScarry

Cuestiones relacionadas