Ho un campo di testo all'interno di un UIScrollView e voglio mostrare un pulsante di cancellazione quando l'utente inizia a modificare. Inoltre ho bisogno di nascondere la tastiera quando l'utente tocca lo sfondo di UIScrollview (ma non il campo di testo). La visualizzazione del pulsante di cancellazione non è un problema, il problema è che quando si tocca il pulsante Cancella la tastiera viene nascosta e il campo di testo non viene cancellato. Ovviamente il problema è con il riconoscitore di gesti, perché il metodo che si occupa di questo viene attivato quando si fa clic sul pulsante di cancellazione (ma non viene attivato quando si tocca il campo di testo). Ecco il mio codice:Il pulsante di cancellazione di UITextfield nasconde la tastiera quando è all'interno di UIScrollView
//adding gesture recognizer so i can hide keyboard when user taps scrollview
- (void) textFieldDidBeginEditing:(UITextField *)textField
{
if (self.tapOutside == nil) self.tapOutside = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textFieldTouchOutSide:)];
[self.scrollView addGestureRecognizer:self.tapOutside];
}
//This hides keyboard BUT IS ALSO CALLED WHEN CLEAR BUTTON IS TAPPED
- (void)textFieldTouchOutSide:(id)sender
{
[self.textfield resignFirstResponder];
}
//NEVER GETS CALLED
- (BOOL) textFieldShouldClear:(UITextField *)textField {
return YES;
}
Qualche idea su come risolvere questo? Forse il modo migliore per aggiungere il riconoscimento dei gesti? Non riesco a pensare a nessun soluzione elegante ... Grazie mille in anticipo ...
non posso testarlo fino alla prossima settimana, ma questa sembra essere una soluzione ... grazie mille! :) –
Hai provato? Ha funzionato? In tal caso, si prega di accettare questa risposta. – Thompsonian
Avevo una sottoclasse UIButton personalizzata anche nella pagina, quindi ho creato isKindOfClass: [UIButton class] –