ios objective-c ios7

ios - ¿UITextView agrega nueva línea involuntariamente?



objective-c ios7 (3)

De acuerdo, este comportamiento se debe a un error en iOS al convertirse en el primer respondedor dentro del mismo ciclo de ejecución usando el siguiente botón. Para superar esto deberías hacer esto manualmente. Primero resigne el primer respondedor de un textFied, y luego haga que textView sea el primero en responder. Me gusta esto. Implementa este método delegado.

- (BOOL)textFieldShouldReturn:(UITextField *)textField { [textField resignFirstResponder]; [textView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0]; return YES; }

Tengo una vista de desplazamiento que contiene un UITextField y un UITextView. La tecla de retorno UITextField es "Siguiente" y cuando se presiona esto llamo a [myTextView becomeFirstResponder]; Se inserta una nueva línea al azar en mi vista de texto, así que empiezo en la segunda línea. ¿Cómo evito esto?

También es importante tener en cuenta que esto no ocurre cuando pulso directamente en UITextView en lugar de tocar la siguiente tecla.

¡Gracias por adelantado!


Idea similar a performSelector , pero utilizando la cola de despacho asincrónica (versión Swift 4):

func textFieldShouldReturn(_ textField: UITextField) -> Bool { textField.resignFirstResponder() DispatchQueue.main.async { self.myTextView.becomeFirstResponder() } return true }


Una solución para resolver esto es cuando implementa el método textFieldShouldReturn: delegate, asegúrese de devolver NO , y no YES . Al devolver NO , la nueva línea no se transfiere al campo de texto.

- (BOOL)textFieldShouldReturn:(UITextField *)textField { // move to next field or whatever you need [myTextView becomeFirstResponder]; return NO; }