web-dev-qa-db-fra.com

Appuyez sur le bouton Effacer TextField pour masquer le clavier au lieu d'effacer le texte

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?

19
Mad

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
}
41
Himanshu padia

Essayez ce code après avoir attaché le délégué de uitextifield

-(BOOL)textFieldShouldClear:(UITextField *)textField
{
     return true;
}
11
Ajay Malviya

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;
}
10
Shamsudheen TK

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.

5
Sj.

Ce problème se produit également si vous avez

yourTextField.clearButtonMode = UITextFieldViewModeNever;

Cochez cette ligne et supprimez-la ou changez de mode d'affichage.

2