In che modo la tastiera di sistema ottiene un riferimento a UITextfield che è il primo risponditore?
Richiede solo il sistema per il primo soccorritore; sfortunatamente, questo è un metodo UIKit privato (o lo era, l'ultima volta che ho controllato). Puoi trovare il primo risponditore ricorsivamente attraverso la gerarchia delle viste e chiedere ogni vista, ma è piuttosto maldestro.
Invece, è possibile aggiungere un link al campo di testo sulla vista di ingresso (sto assumendo la visualizzazione di ingresso è una sottoclasse UIView su ordinazione):
@property(nonatomic, assign) UITextField* target;
Quindi utilizzare i metodi delegato UITextField in vista controller per vedere quando il campo di testo viene messo a fuoco:
- (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;
}
si prega di essere più precisi, cosa intendete per "immissione diretta al campo di testo"? Vuoi mettere a fuoco il UITextField? – Dion
Scusa, pensavo di essere più preciso nella mia spiegazione. Quello che voglio dire è che imposto la proprietà inputView su un UITextField alla mia vista di input personalizzata. Quindi, quando l'utente preme un pulsante sul mio inputView personalizzato, come faccio a ottenere un riferimento a UITextfield che è il primo risponditore corrente in modo da poter modificare la proprietà text di quel UITextfield per riflettere l'input dell'utente? –