2011-01-24 9 views
3

J'ai une liste de sélection pour sélectionner un jour et un champ de texte pour afficher la date sélectionnée. Ce sera comme ça ...Comment démissionner ou masquer le clavier?

alt text

Si je choisis une date, ce sera comme ça ....

alt text

Le symbole de la croix dans le champ de texte est acheived par le code ....

textField.clearButtonMode=UITextFieldViewModeAlways; 

Maintenant mon problème est, en cliquant sur ce bouton croisé, un clavier a été affiché. Cela ressemble ....

alt text

Mais je veux le bouton croix uniquement pour effacer le champ de texte. Le clavier ne devrait pas venir. C'est possible?

Répondre

3

Sur votre UITextFieldDelegate, mettre en œuvre la méthode - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField et retour NO;

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { 
return NO; 
} 
+0

Merci ... ça marche :) –

1

Essayez de définir la propriété editable de ce champ de texte sur false.

3

Dans la méthode « édition ne commence » du champ de texte, ajouter ce qui suit:

[UITextField resignFirstResponder];

Avec cela en place, que le clavier ne sera pas affiché.

:) Bonne programmation

+0

Ceci est le mauvais endroit pour le faire. Vous pouvez vous retrouver avec l'animation du clavier, puis disparaître. Le bon endroit pour faire cela est avant que le champ de texte ne devienne actif, et ainsi le clavier ne sera pas affiché, même pour quelques instants. – vfn

+0

Bon point vfn. Je n'y ai pas beaucoup réfléchi, car le code a fonctionné sur mon iPhone 4 quand je l'ai testé rapidement. –

+0

Merci Aurum .. –

0

Comme d'autres l'ont dit, vous pouvez masquer le clavier via le protocole UITextFieldDelegate et par une méthode [texfField resignFirstResponder]. Alternativement, comme vfn suggéré, vous pouvez empêcher le clavier de montrer tout à fait.

Pour ce bouton cependant, vous êtes jeune à vouloir définir la propriété clearButtonMode du champ de texte. Pour voir quelles sont vos options disponibles, lisez ceci: http://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html#//apple_ref/doc/c_ref/UITextFieldViewMode

+0

'UITextFieldDelegate' est un protocole pas une classe. Pour démissionner en tant que premier répondant, vous devriez être averti que le champ de texte est devenu actif, et pour cela vous devez implémenter le protocole, et donc il n'y a pas de RO. – vfn

+0

@vfn Je suis corrigé. Ce n'est pas tôt dans mon fuseau horaire. Merci d'avoir fait remarquer cela. – Moshe

Questions connexes