Я устанавливаю программно текст в текстовом поле, текст является датой рождения, но делегат не работает, если я использую встроенную клавиатуру, делегат работает, но если я устанавливаю текст программно в текстовом поле, делегаты не работают
Я пользуюсь swift 4.2
import UIKit
class userBirthdateViewController: UIViewController, UITextFieldDelegate, NumberCalculable {
@IBOutlet weak var messageBirthdate: UILabel!
@IBOutlet weak var inputBirthdate: UITextField!
@IBOutlet weak var keyboardView: keyboardView!
override func viewDidLoad() {
super.viewDidLoad()
messageBirthdate.text = "Debes tener 18 años cumplidos para\npoder abrir una cuenta Flink"
inputBirthdate.attributedPlaceholder = NSAttributedString(string: "DD-MM-AAAA", attributes: [NSAttributedString.Key.foregroundColor: UIColor.gray])
self.inputBirthdate.inputView = UIView()
self.inputBirthdate.becomeFirstResponder()
keyboardView.delegate = self
inputBirthdate.delegate = self
// Do any additional setup after loading the view.
}
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if textField == inputBirthdate {
// check the chars length dd -->2 at the same time calculate the dd-MM --> 5
if (inputBirthdate?.text?.count == 2) || (inputBirthdate?.text?.count == 5) {
//Handle backspace being pressed
if !(string == "") {
// append the text
inputBirthdate?.text = (inputBirthdate?.text)! + "-"
}
}
// check the condition not exceed 9 chars
return !(textField.text!.count > 9 && (string.count ) > range.length)
}
else {
return true
}
}
@IBAction func probe(_ sender: Any) {
}
func addNumber(_ number: Int) {
if number != -1
{
inputBirthdate.insertText("\(number)")
}
else
{
if !inputBirthdate.text!.isEmpty
{
inputBirthdate.text?.removeLast()
}
}
}
}
Я ожидаю, что текстовое поле отвечает как собственная клавиатура, единственное отличие состоит в том, что я программно устанавливаю текст в текстовое поле.
Я использую эту строку self.inputBirthdate.inputView = UIView (), потому что я не хочу, чтобы появилась встроенная клавиатура, а только курсор
как я могу решить эту проблему?
Я пытался установить setText, но не работает: (