, :

, Ive :
@IBOutlet weak var txtCardDetails1: UITextField!
@IBOutlet weak var txtCardDetails2: UITextField!
@IBOutlet weak var txtCardDetails3: UITextField!
@IBOutlet weak var txtCardDetails4: UITextField!
@IBOutlet weak var txtExpiryMonth: UITextField!
@IBOutlet weak var txtExpiryYear: UITextField!
let objBlackColor = UIColor.blackColor()
let objGreyColor = UIColor.grayColor()
func viewDidLoad() { super.viewDidLoad()
let toolbarDone = UIToolbar.init()
toolbarDone.sizeToFit()
let barBtnDone = UIBarButtonItem.init(barButtonSystemItem: UIBarButtonSystemItem.Done,
target: self, action: #selector(VerifyCardViewController.doneButton_Clicked(_:)))
toolbarDone.items = [barBtnDone]
txtCardDetails3.inputAccessoryView = toolbarDone
txtCardDetails4.inputAccessoryView = toolbarDone
txtExpiryMonth.inputAccessoryView = toolbarDone
txtExpiryYear.inputAccessoryView = toolbarDone
txtCardDetails3.addTarget(self, action: #selector(VerifyCardViewController.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged)
txtCardDetails4.addTarget(self, action: #selector(VerifyCardViewController.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged)
txtExpiryMonth.addTarget(self, action: #selector(VerifyCardViewController.textFieldDidChange(_:)), forControlEvents: UIControlEvents.EditingChanged)
setBorderColor(txtExpiryMonth,setBorderColor: objGreyColor)
setBorderColor(txtExpiryYear,setBorderColor: objGreyColor)
}
func setBorderColor(objTextField : UITextField, setBorderColor objColor:UIColor) {
let bottomLine = CALayer()
bottomLine.frame = CGRectMake(0.0, objTextField.frame.height - 1, objTextField.frame.width, 1.0)
bottomLine.backgroundColor = objColor.CGColor
objTextField.borderStyle = UITextBorderStyle.None
objTextField.layer.addSublayer(bottomLine)
}
func doneButton_Clicked(sender: AnyObject) {
txtCardDetails3.resignFirstResponder()
txtCardDetails4.resignFirstResponder()
txtExpiryMonth.resignFirstResponder()
txtExpiryYear.resignFirstResponder()
}
func textFieldDidChange(textField: UITextField){
let text = textField.text
if textField.tag == 101 {
if text?.utf16.count==2 {
txtCardDetails4.becomeFirstResponder()
}
}
else if textField.tag == 102 {
if text?.utf16.count==4 {
txtExpiryMonth.becomeFirstResponder()
}
}
else if textField.tag == 103 {
if text?.utf16.count==2 {
txtExpiryYear.becomeFirstResponder()
}
}
}
func textFieldDidBeginEditing(textField: UITextField) {
if textField.tag == 103 {
setBorderColor(txtExpiryMonth,setBorderColor: objBlackColor)
}
else if textField.tag == 104 {
setBorderColor(txtExpiryMonth,setBorderColor: objBlackColor)
}
textField.becomeFirstResponder()
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true;
}
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
if let text = textField.text {
let newStr = (text as NSString)
.stringByReplacingCharactersInRange(range, withString: string)
if newStr.isEmpty {
return true
}
let intvalue = Int(newStr)
if textField.tag == 101 || textField.tag == 103 || textField.tag == 104{
return (intvalue >= 0 && intvalue <= 99) ? true : false
}
else if textField.tag == 102 {
return (intvalue >= 0 && intvalue <= 9999) ? true : false
}
}
return true
}