2009-11-10 5 views
2

J'ai un formulaire où j'ai besoin d'entrer la date de début et la date de fin pour voir les transactions. Quand je mets l'accent sur le textfirld, je peux voir le clavier, mais derrière ça, le datepicker arrive. comment est-ce que je supprime le clavier et montre seulement le datepickermasquer le clavier du champ de texte et afficher datepicker

Répondre

3

je me débattais avec moi-même et a trouvé la solution. Vous pouvez le faire de cette façon:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
// set delegate for date text field 
    dateField.delegate = self; 
} 

// Display the picker instead of a keyboard 
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    [self showDatePicker]; 
    return NO; 

} 

Cela suppose que vous avez déclaré une méthode appelée showDatePicker, qui gère l'affichage UIPicker.

1

vous pouvez appeler [myTextField resignFirsrResponder] sur une certaine méthode de clic de bouton ou, par exemple, dans la méthode de délégué textFieldShouldReturn. smth comme ça

- (BOOL)textFieldShouldReturn:(UITextField *)textField{ 
    [textField resignFirstResponder]; 
    return YES; 
} 
+0

Je ne veux pas ajouter un bouton, puis rejeter le clavier. simplement en cliquant sur le champ de texte, il devrait afficher le Dateur de date – shreedevi

+0

textFieldShouldReturn: méthode de délégué appelé après que le bouton "Retour" du clavier a été pressé. – Morion

+0

vous voulez dire que chaque fois que je mets l'accent sur le champ de texte, le clavier sera affiché, et quand j'appuie sur le bouton de retour, on me montrera le compteur de date. – shreedevi

2

Cela ressemble à la place d'un clavier standard, vous voulez plutôt que de montrer votre propre point de vue datepicker. Je crois que vous pouvez gérer cela en définissant le délégué pour votre champ de texte, puis en fournissant textFieldShouldBeginEditing.

// dans viewWillAppear définir le délégué textfield si nécessaire

... 
    myTextField.delegate = self; 
    ... 

    - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 

     // if date picker not in display, show it here... 

     return NO; 
    } 
0

Très simple, en viewController.h mis le UITextFieldDelegate. Après dans viewDidLoad.

txtFecha.delegate = self; 

datePicker = [[UIDatePicker alloc]init]; 
[datePicker setDatePickerMode:UIDatePickerModeDate]; 

self.txtFecha.inputView = datePicker; 
0

Maintenant, vous pouvez utiliser inputView et inputAccessoryView de UITextField. Déclarez le fichier .h et @synthesize dans le fichier .m. Connectez-les au propriétaire du fichier dans le fichier .xib, assurez-vous qu'il est hors de la self.view.

- (void)viewDidLoad 
    { 
     _dateOfBirthTextField.inputView = self._datePickerView; 
     _dateOfBirthTextField.inputAccessoryView = self._toolbar; 
    } 

écrire également la fonction chercher la date à partir du sélecteur

#pragma mark- UITextField with UIDatePicker- 

- (IBAction)dateChanged:(id)sender { 
    UIDatePicker *picker = (UIDatePicker *)sender; 
    _dateOfBirthTextField.text = [NSString stringWithFormat:@"%@", picker.date]; 
} 

- (IBAction)doneEditing:(id)sender { 
    [_dateOfBirthTextField resignFirstResponder]; 
} 

Ajouter DateChanged: IBAction sur valueChanged: action de _datePicker. et doneEditing: IBAction sur l'action du bouton de la barre d'outils.

Questions connexes