El teclado y el cursor se muestran, pero no puedo escribir dentro de UITextFields y UITextViews

En un iPad con iOS 6 GM. Tengo 6 UITextFields, 3 UITextViews y un UIButton que desencadena un popover / actionsheet.

Cuando selecciono uno de los UITextFields o UITextViews, aparece el teclado y aparece el cursor, pero no puedo ingresar texto. Si presiono el botón UIB para mostrar el popover y luego toco afuera para descartarlo y volver a los UITextFields o UITextViews, funcionan.

Tengo UITextxxxx.delegate = self; establecido para todos ellos. “Enabled” y “User Interaction Enabled” activada en xibs, UITextFieldDelegate y UITextViewDelegate en mi archivo .h, así como:

- (BOOL)disablesAutomaticKeyboardDismissal { return NO; } - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { return YES; } - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { return YES; } - (IBAction)textFieldReturn:(id)sender { [sender resignFirstResponder]; } - (BOOL)textViewShouldBeginEditing:(UITextView *)textView { if (textView == notestextView){ [notestextView becomeFirstResponder]; } if (textView == notestextViewTwo){ [notestextViewTwo becomeFirstResponder]; } if (textView == notestextViewThree){ [notestextViewThree becomeFirstResponder]; } return YES; } - (BOOL)textViewShouldEndEditing:(UITextView *)textView { return YES; } 

Incluso intenté [xxxxxxx convertirse en FirstResponder]; en viewDidLoad. Aparece el teclado y coloca el cursor en el campo en tiempo de ejecución, pero todavía no puedo escribir hasta que toco el UIButton para mostrar el popover.

¿Alguien sabe por qué no puedo escribir en los campos y por qué envidiar el popover “lo arregla”?

ACTUALIZACIÓN 9/18: Puse una nueva vista en mi aplicación que solo tiene una vista con un campo de texto y una vista de texto. Los delegates están configurados. Mismo comportamiento. Aparecen el teclado y el cursor, pero no se escribe. Eso descarta que el popovercontroller se meta con cosas.

Estoy empezando a pensar que esto es un error de iOS 6. Esta es prácticamente la misma vista que tenía en la versión para iPhone de mi aplicación en iOS 4 y 5 y nunca tuve un problema. La única diferencia entre la versión de iPhone y iPad es la forma en que se presenta el imagepicker. Tienes que usar un popover para el iPad. Es por eso que estaba pensando que el delegado de popover tenía algo que ver con eso.

¿Hay algún tipo de diferencia fundamental entre la implementación de UITextFields y UITextViews en iOS 6 que desconozco? Parece poco probable.

Si esto ayuda a que mi aplicación fluya así:

Vista principal con 10 botones

  • cada botón empuja una tabla vista a través de un controlador de navegación
  • las tablas desplazan una vista de detalle – los campos de texto y textviews muestran el comportamiento descrito anteriormente
  • tableview también tiene un botón de agregar que empuja una vista modal para agregar nuevos elementos – los campos de texto y textviews muestran el comportamiento descrito anteriormente

Originalmente, se trataba de una aplicación de iPhone basada en iOS 5. Para convertirla en una aplicación de iPad, solo .xibs el proyecto y actualicé todas las versiones de .xibs a iPad. No sé si es un error o no, o si tiene algo que ver con la actualización a iOS 6, pero hacerlo así arruina algo con MainWindow.xib .

En MainWindow xib, escribí "MainViewController" para el título (anteriormente estaba en blanco).

enter image description here

Y marcó "Visible at Launch" . A pesar de que ya es visible en el lanzamiento, el hecho de no tener eso marcado daña algo.

enter image description here

Ahora todas mis vistas de texto y campos de texto funcionan.

Me encontré con este mismo problema, asegúrese de que el delegado de la aplicación tenga un [self.window makeKeyAndVisible] . Eso lo resolvió para mí.

Para mí, tu solución no funciona, así que encontré otra.

Estoy usando Revmob Ads para que la vista de pantalla completa y la vista de banner se carguen cuando se inicia la aplicación. Revmob utiliza un poco de personal para mostrar el mismo banner en todos los controladores de vista. Creo que este es un problema. Cuando deshabilité revmob, puedo agregar texto a mi campo de texto.

Esto es aparentemente un error en iOS 6. Solo pon [searchBar becomeFirstResponder]; en el método searchBarTextDidBeginEditing :

 - (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar { if (!self.window.isKeyWindow) { [self.window makeKeyAndVisible]; } } 

Esta solución funciona para mí.

Estas soluciones no me funcionaron, pero después de eliminar la carpeta de datos derivados en ~/Library/Developer/Xcode/DerivedData/AppName , funcionó.

Para aclarar otras respuestas, no puede ingresar texto a una ventana que no está configurada para ser la ventana clave. La mayoría de las aplicaciones solo usan una ventana, o no tienen entrada de texto en ventanas adicionales, así que nunca encuentres este problema.

Cuando maneje varias ventanas, asegúrese de resignKeyWindow a resignKeyWindow + makeKeyWindow mientras cambia el foco y, muy importante, ¡restaure la ventana de claves después!

Pruebe becomeFirstResponder en dispatch_async(dispatch_get_main_queue(),^{});