Sur iPhone, j'ai une vue qui a un UITextField
. Lorsque j'appuie sur le bouton d'effacement de UITextField
, le clavier est ignoré au lieu d'effacer le texte dans le UITextField
. Sur un iPad, cela fonctionne correctement. Que puis-je faire pour résoudre ce problème?
Effacez simplement le champ resignFirstResponder
(si vous voulez masquer le clavier) et renvoyez NO
/false
Remarque: définissez la propriété de l'inspecteur d'attributs de UITextField
Bouton Effacer -> Apparaît lors de l'édition
il affichera donc le bouton d'effacement lors de l'édition dans le champ de texte.
// Objectif-C
-(BOOL)textFieldShouldClear:(UITextField *)textField
{
textField.text = @"";
[textField resignFirstResponder];
return NO;
}
// Swift
func textFieldShouldClear(textField: UITextField) -> Bool {
textField.text = ""
textField.resignFirstResponder()
return false
}
Essayez ce code après avoir attaché le délégué de uitextifield
-(BOOL)textFieldShouldClear:(UITextField *)textField
{
return true;
}
Tout d'abord, vérifiez tous les blocs de code liés à votre UITextField
(en particulier le code yourTextField.hidden = YES;
)
Mettez des points d'arrêt et analysez tous les UITextField
délégués que vous avez implémentés.
(textFieldDidEndEditing
, textFieldShouldEndEditing
, textFieldShouldReturn.etc
. )
OR
Implémentez le délégué textFieldShouldClear
et écrivez le code ici pour afficher et effacer votre UITextField
Pour ce faire, vous devez définir le clearButtonMode
comme ci-dessous,
yourTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
yourTextField.delegate = self;
//For active keyboard again
[yourTextField becomeFirstResponder];
Ensuite, implémentez le délégué textFieldShouldClear
VotreClasse.h
@interface className : UIViewController <UITextFieldDelegate>
VotreClasse.m
-(BOOL)textFieldShouldClear:(UITextField *)textField {
yourTextField.hidden = NO;
yourTextField.text = @"";
return YES;
}
Assurez-vous juste que vous avez donné ces deux
editingTextField.delegate = self;
editingTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
TextFieldShouldClear n'est nécessaire que si vous devez effectuer des personnalisations :-)
Faites-vous quelque chose dans cette méthode?
Peut-être que vous appelez resignFirstResponder dans cette méthode de délégué, c'est pourquoi le clavier est rejeté.
Veuillez parcourir les méthodes de délégué et vérifier ce que vous faites exactement.
Ce problème se produit également si vous avez
yourTextField.clearButtonMode = UITextFieldViewModeNever;
Cochez cette ligne et supprimez-la ou changez de mode d'affichage.