我正在构建一个接受4位OTP的视图。我的代码如下
“CodeText”是UITextField的子类
class RegisterController: ModelController, UITextFieldDelegate {
@IBOutlet var firstDigit:CodeText?
@IBOutlet var secondDigit:CodeText?
@IBOutlet var thirdDigit:CodeText?
@IBOutlet var fourthDigit:CodeText?
override func viewDidLoad() {
super.viewDidLoad()
self.navigationItem.hidesBackButton = true
self.firstDigit!.delegate = self
self.secondDigit!.delegate = self
self.thirdDigit!.delegate = self
self.fourthDigit!.delegate = self
self.firstDigit!.becomeFirstResponder()
}
// UITextField Delegate Methods
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
if (textField == self.firstDigit) {
if(textField.text!.characters.count >= 1 ) {
self.secondDigit?.becomeFirstResponder()
}
}
else if (textField == secondDigit) {
if(textField.text!.characters.count >= 1 ) {
self.thirdDigit?.becomeFirstResponder()
}
}
else if (textField == thirdDigit) {
if(textField.text!.characters.count >= 1 ) {
self.fourthDigit?.becomeFirstResponder()
}
}
else if (textField == fourthDigit) {
print("Fourth Digit")
if(textField.text!.characters.count >= 1 ) {
self.fourthDigit?.resignFirstResponder()
}
}
return true
}
}
除了一个功能外,上面的代码对我来说很好。我希望键盘在第四个数字输入后被解除,但是当“fourthDigit”获得它的焦点并获得它的第一个条目但是当textfield获得它的第二个条目时调用委托时,不会调用“shouldChange”委托方法键盘正在被解雇。
因此,为了让键盘被解雇,需要进行不必要的击键。
任何建议都会有所帮助
答案 0 :(得分:2)
用于捕获文本字段的所有事件的替代选择,无需编码
例如,您的UIControlEventEditingChanged
方法名称为updateContentsOfTextField
并在
中获取输出func updateContentsOfTextField(_ theTextField: UITextField) {
print("text changed: \(theTextField.text)")
}
您可以从here
获取更多信息答案 1 :(得分:0)
请尝试使用string.length>0
代替textField.text!.characters.count >= 1
修改强>
当用户使用通知在textfield
输入字符时,我设法获得了回调
// in your respective method where you init your text field
[_txtSearchLocation addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
- (void)textFieldDidChange :(UITextField *) textField{
}
当此方法接到电话时,您可以拨打textField.resignFirstResponder
对不起Obj-c,我从我当前打开的文件thx
复制了这个