2017-02-13 12 views
1

Ich möchte den Text formatieren (dd-MM-JJJJ), während ich in UITextField, ich benutze SWIFT 3.0, Irgendwelche Vorschläge wie kann ich die implementieren das Gleiche.Eingeben des Datums im TT-MM-JJJJ-Format mit numerischer Tastatur in UITextField swift 3.0

+0

Ich werde vorschlagen, eine Datumsauswahl erstellen, das Datum anzeigt in Ihr gewünschtes Format und setzen Sie t Hat-Picker-Ansicht als Eingabeansicht dieses Textfelds. – Wolverine

+0

Ich habe bis jetzt nichts versucht, ich habe keine Ahnung, wie man implementiert – Haroon

+0

Design-Anforderung ist, dass mit einer Tastatur nicht ein Pflücker zu implementieren, Datum Pflücker arbeitet bereits – Haroon

Antwort

3

Verwendung wie

// create one textfield 
@IBOutlet var txtDOB: UITextField! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    // set delegate for your textfield 
    txtDOB.delegate = self 

} 

// rufen Sie Ihre Funktion in textfield Delegat shouldChangeCharactersIn

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool { 
    //Format Date of Birth dd-MM-yyyy 

    //initially identify your textfield 

    if textField == txtDOB { 

     // check the chars length dd -->2 at the same time calculate the dd-MM --> 5 
     if (txtDOB?.text?.characters.count == 2) || (txtDOB?.text?.characters.count == 5) { 
      //Handle backspace being pressed 
      if !(string == "") { 
       // append the text 
       txtDOB?.text = (txtDOB?.text)! + "-" 
      } 
     } 
     // check the condition not exceed 9 chars 
     return !(textField.text!.characters.count > 9 && (string.characters.count) > range.length) 
    } 
    else { 
     return true 
    } 
} 

ObjectiveC

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
    { 
//Format Date of Birth dd-MM-yyyy 

if(textField == txtDOB) 
    { 
    if ((txtDOB.text.length == 2)||(txtDOB.text.length == 5)) 
     //Handle backspace being pressed 
     if (![string isEqualToString:@""]) 
      txtDOB.text = [txtDOB.text stringByAppendingString:@"-"]; 
    return !([textField.text length]>9 && [string length] > range.length); 
} 
else 
    return YES; 

} 
+0

Dank Anbu.Karthik, Es funktioniert wie pro Anforderung, eine kleine Frage, wenn Sie helfen können. Ich möchte nur numerische Zeichen, Nummer Tastatur haben auch Dezimalpunkt. Wie kann ich das vermeiden? – Haroon

+0

@Haroon - siehe http://stackoverflow.com/questions/30973044/how-to-restrict-uitextfield-to-take-only-numbers-in-swift –

Verwandte Themen