2010-07-01 9 views
10

He visto this question, pero la pregunta es ¿cómo saber qué textView es el primero en responder? This question looked promising para averiguar cuál es la primera respuesta, pero resulta que llama a API privadas. ¿Hay alguna forma de ocultar el teclado o de encontrar al primer respondedor como el que tiene el teclado?¿Oculta el teclado de entrada en el iPhone sin saber quién es el primero en responder?

+0

posible duplicado de [¿Manera fácil de ignorar el teclado?] (Http://stackoverflow.com/questions/741185/easy-way-to-dismiss-keyboard) – Senseful

+0

Ver también [Descartar el teclado al tocar en cualquier lugar fuera del campo de texto] (http://stackoverflow.com/questions/11274119/dismiss-keyboard-on-touch-anywhere-outside-uitextfield) – ToolmakerSteve

Respuesta

25

Es fácil:

[[[UIApplication sharedApplication] keyWindow] endEditing:YES]; 

echar un vistazo a UIView Class Reference.

+1

Tendré que verificar esto antes de marcarlo como aceptado. Por otro lado, si enlazaba con algunos documentos, eso sería mejor para mí y SO. –

+0

UIWindow es una subclase de UIView; hereda el método 'endEditing' de UIView. –

+0

Gracias, genial. –

4

[textView isFirstResponder] debería decirle si es el primero en responder. Supongo que podrías recorrer todos los campos de texto de tu clase para comprobar si es el primer respondedor.

O simplemente puede llamar a resignFirstResponder en cada campo de texto, y seguirá funcionando.

+0

+1, eso ayuda sin embargo estoy esperando una mejor respuesta. –

+0

En realidad, pensándolo bien, la segunda parte de tu respuesta me hace darme cuenta de que gracias a mi aplicación bien diseñada :), puedo hacerlo. –

3

Creo que debe elegir algo para convertirse en el primer respondedor, algo que probablemente no haga nada por sí mismo, y llame al -[UIResponder becomeFirstResponder] en él. Esto funcionaría bien con UIViewController o UIWindow (que se puede obtener a través de -[UIView window], creo) porque estos tendrían las cadenas de respuesta más similares, y harían que el primerResponder actual pierda su primer estado de respuesta, descartando el teclado, pero tampoco lo haría Abra el teclado, ya que no sería un UITextField.

Cuestiones relacionadas