2009-03-16 13 views
3

J'ai 5 UITextFields ajoutés sur un formulaire. L'un des fichiers texte est pour entrer la date de naissance. Donc, lorsque ce champ de texte particulier est touché au lieu d'afficher le clavier par défaut, datepicker doit être affiché.Comment masquer le clavier par défaut

J'ai essayé les éléments suivants:

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 
    [textField resignFirstResponder]; 
    [self showDatePicker];//this is my own function to display datepicker. 
} 

lorsque cette fonction est appelée datepicker est affiché, ainsi que le sélecteur de date le clavier par défaut est également affiché et que cache le datepicker. Je ne sais pas comment se débarrasser du clavier par défaut, pour ce particulier textfiled. Aidez-moi, s'il vous plaît.

+0

Il n'y a pas de réponse à cette question? – saikamesh

+0

Je veux juste savoir si cela est possible ou non, il n'y a pas de point de perdre du temps sur ce point, si cela est impossible – saikamesh

+0

s'il vous plaît aidez-moi !!! – saikamesh

Répondre

1

Peut-être que vous ne devriez pas utiliser un UITextField pour cela. Utilisez un UITableViewCell normal et poussez un nouveau UIViewController avec l'outil datepicker lorsque vous appuyez sur.

+0

Merci de m'avoir donné cette astuce. J'ai déjà ajouté un bouton transparent sur le champ de texte, et dans son événement click j'ai appelé ma fonction showDatePicker. Mais le champ de texte n'a pas le focus quand on clique sur le bouton transparent. – saikamesh

+0

On m'a demandé de réaliser cela aussi. C'est ce qui m'a fait poster cette question. – saikamesh

+0

Ne le rendez pas plus compliqué que nécessaire. Un UITableViewCell répond aux robinets, et il a une propriété .text. Si vous n'allez pas entrer de texte via le clavier, vous n'avez pas besoin d'UITextField ... – Schpaencoder

0

La démission du premier répondeur doit masquer le clavier. Ma meilleure supposition est que textField n'est pas réellement le premier répondeur à ce point dans le code, donc lui disant de démissionner n'a aucun effet. Vous devriez peut-être insérer une instruction NSLog pour vérifier cela.

2

Vous pouvez gérer cela dans -textFieldShouldBeginEditing:.

Si cette méthode renvoie NON, le clavier ne sera pas affiché.

Il suffit d'afficher le sélecteur de date dans cette méthode, puis de retourner NO.

3

Bien que ce soit une vieille question, je suis venu ici pendant que je cherchais la même chose.

Cela fonctionne pour un nombre/imbrication des vues présentées dans l'écran,

- (void) hideKeyboard: (UIView *) view { 
    NSArray *subviews = [view subviews]; 
    for (UIView *subview in subviews){ 
     if ([subview isKindOfClass:[UITextField class]]) { 
      [subview resignFirstResponder]; 
     } 
     [self hideKeyboard: subview ]; 
    } 
} 

Plus tard, je trouve plus de façon intuitive de le faire,

[self.view endEditing:YES]; 
1

Je viens de travailler dans ce même problème,

Nous avons essayé quelques petites choses et nous nous sommes retrouvés avec beaucoup de code horrible et des bugs en cours de route.

L'option la plus simple est de loin d'avoir encore un UITextField, mais pour le mettre est .inputView au DatePicker

Maintenant, nous essayons de trouver un moyen agréable de soumettre le terrain, car le sélecteur n'a pas de bouton de retour comme les claviers.

+0

La meilleure façon de soumettre le champ à mon humble avis est d'utiliser 'UITAccessoryView' de' UITextField'. – user500

Questions connexes