Comment masquer un clavier lorsque j'utilise le sélecteur DateTime sur UITextField. Lorsque je clique sur UITextField cette heure affiche d'abord un clavier, il affiche le sélecteur de date / heure sur UITextField sélectionné. Veuillez me donner une solution appropriée pour cela.

1
Mahesh Khokhar 27 janv. 2017 à 15:16

6 réponses

Meilleure réponse

1.Définissez le délégué textField comme ci-dessous l'image

(UNE)

enter image description here

(B)

enter image description here

2.Ajoutez des méthodes de délégué textField

Rapide

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    // Implement your Date Time Picker initial Code here
  return false
}

Objectif c

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
   // Implement your Date Time Picker initial Code here
    return NO;
}
0
iTALIYA 24 août 2017 à 11:29

Vous pouvez utiliser Keyboard notifications pour savoir si Clavier complet est affiché ou non. Lorsque vous découvrez que le clavier est affiché, affichez le sélecteur DateTime sur votre textField actuel.

Voici un code pour les notifications clavier

let center = NotificationCenter.default
center.addObserver(self,
                   selector: #selector(keyboardWillShow(_:)),
                   name: .UIKeyboardWillShow,
                   object: nil)

center.addObserver(self,
                   selector: #selector(keyboardWillHide(_:)),
                   name: .UIKeyboardWillHide,
                   object: nil)
0
Usman Javed 27 janv. 2017 à 12:36

Sélecteur de champ de texte View use this

    let pickerView = UIDatePicker (frame: CGRect(x: 0, y: 240, width:    self.view.frame.size.width, height: 250))
    pickerView.backgroundColor = UIColor.white
    pickerView.minuteInterval = 30
    textField.inputView = pickerView

    pickerView.addTarget(self, action: #selector(yourvc. datePickerChanged(sender:)), for: UIControlEvents.valueChanged)
    let toolbar = UIToolbar (frame: CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 56))
    toolbar.barStyle = UIBarStyle.black
    toolbar.sizeToFit()

    var items = [UIBarButtonItem]()

    items.append(
        UIBarButtonItem(title: "Done".localized(lang:  self.language!), style: .plain, target: self, action: #selector(yourvc.pickerDoneClicked(sender:)))
    )
    toolbar.setItems(items, animated: true)
    toolbar.tintColor = UIColor.black
    textField.inputAccessoryView = toolbar


   func datePickerChanged(sender: UIDatePicker)
    {
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd MMM yyyy"
    print("date picker --->%@",sender.date)
    }

  func pickerDoneClicked(sender: UIBarButtonItem)
   {
    textfield.resignFirstResponder()
    self.view.endEditing(true)
   }
0
Lalit kumar 27 janv. 2017 à 12:41

Je vous suggère d'utiliser le inputView du textField pour remplacer le clavier par un sélecteur de date

dateTextField.inputView = datePicker

Ainsi

Ou vous pouvez empêcher le clavier de s'afficher en premier lieu en utilisant le

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
    return false
}

Vous devrez retourner false et ajouter votre code personnalisé pour afficher un sélecteur de date avant

0
DatForis 27 janv. 2017 à 12:37
  1. Définissez le délégué textField sur l'objet dans lequel le champ de texte est initialisé

    textfield.delegate = self // objet qui gérera les méthodes déléguées textfield.

  2. Implémenter les méthodes de délégué textfield

    (BOOL)textFieldShouldReturn:(UITextField *)textField{
        if ([textField canResignFirstResponder]) {
            [textField resignFirstResponder];
        }
    
        return YES;
    
    }
    
    (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
        // add your method here
    
        return YES;
    }
    
    (void)textFieldDidEndEditing:(UITextField *)textField{
    
    }
    

Dans Swift

func textFieldDidEndEditing(textField: UITextField!) {    //delegate method

}

func textFieldShouldEndEditing(textField: UITextField!) -> Bool {  //delegate method
    return true
}

func textFieldShouldReturn(textField: UITextField!) -> Bool {   //delegate method
  textField.resignFirstResponder()

    return true
}
0
iAviator 27 janv. 2017 à 12:37

Dans la méthode déléguée ci-dessous de UITextField , vous pouvez renvoyer false afin que le clavier ne vienne pas, et vous pouvez ajouter le code pour afficher votre sélecteur de date.

func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {

            //Your code to show datepicker

            return false
}
0
kunjus 27 janv. 2017 à 12:34