Come far sparire la tastiera nel simulatore di iPhone
Domanda
Ho una casella di testo nella mia app per iPhone, quando la tocchi nel simulatore, la tastiera si apre. Ma non c'è modo di liberarsene. Altre pagine web offrono soluzioni, senza spiegare perché dovrebbero funzionare e non funzionano per me. Uno dice che delegare la casella di testo alla tua uiview, quindi chiama resignfirstresponder sull'oggetto, ma non viene mai chiamato. Eventuali suggerimenti? Qualcuno può spiegare cosa sta realmente succedendo? Posso capirlo da solo se sapessi quale fosse il paradigma del design ...
Forse dovrei semplicemente mettere un " go " quindi ho qualcosa per distogliere l'attenzione dal campo di testo?
Soluzione
Un modo per farlo è impostare un oggetto come delegato nel campo di testo e implementarlo
- (BOOL)textFieldShouldReturn:(UITextField *)textField
in cui chiami [textField resignFirstResponder]
Questo farà scomparire la tastiera quando premono il pulsante return / go / done (qualunque sia il tasto in basso a destra impostato).
Altri suggerimenti
Per chiudere la tastiera puoi usare TextField Delegate.
Per usare questo segui questi passaggi ...
1. In viewController. h aggiungi la dichiarazione del delegato in questo modo:
@interface ViewController : UIViewController <UITextFieldDelegate>
{
}
2. Nel tuo viewController. m chiama questo metodo:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
3. Quindi scrivere un codice come questo:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return YES;
}
4. Il passaggio finale consiste nell'impostare il delegato di textField:
- (void)viewDidLoad {
[super viewDidLoad];
self.textField.delegate = self;
}
- (BOOL) textFieldShouldReturn: (UITextField *) textField
nel tuo delegato viene chiamato quando viene premuto il pulsante di ritorno.
Si desidera chiamare [textField resignFirstResponder]
e quindi restituire YES
. Questo dovrebbe fare il trucco. Assicurarsi inoltre che il delegato sia impostato. In caso di dubbi, aggiungere un punto di interruzione o NSLog
e verificare.