¿Cómo obtiene el teclado del sistema una referencia al UITextfield que es el primer respondedor?
Simplemente le pide al sistema la primera respuesta; desafortunadamente, ese es un método privado de UIKit (o fue, la última vez que lo verifiqué). Puede encontrar al primer respondedor recurriendo a través de la jerarquía de vista y preguntando a cada vista, pero eso es bastante torpe.
En su lugar, se puede añadir un enlace al campo de texto en la vista de entrada (estoy asumiendo su punto de vista de entrada es una subclase UIView personalizado):
@property(nonatomic, assign) UITextField* target;
A continuación, utilice los métodos de delegado UITextField en su opinión controlador para ver cuando el campo de texto se está enfocando:
- (void)textFieldDidBeginEditing:(UITextField*)textField
{
if ([textField.inputView isKindOfClass:[MyInputView class]])
((MyInputView*)textField.inputView).target = textField;
}
- (void)textFieldDidEndEditing:(UITextField*)textField
{
if ([textField.inputView isKindOfClass:[MyInputView class]])
((MyInputView*)textField.inputView).target = nil;
}
sea más preciso, ¿qué quiere decir con "entrada directa al campo de texto"? ¿Quieres enfocar el UITextField? – Dion
Lo siento, pensé que era más preciso en mi explicación. Lo que quiero decir es que configuro la propiedad inputView en un UITextField en mi vista de entrada personalizada. Entonces, cuando el usuario presiona un botón en mi inputView personalizado, ¿cómo obtengo una referencia al UITextfield que es el primer respondedor actual, así que puedo cambiar la propiedad del texto de ese UITextfield para reflejar la entrada del usuario? –