在空的UITextField Swift工作示例中检测退格

时间:2019-06-12 20:01:37

标签: swift

我知道这个问题听起来很重复,但是看几个答案,对我来说还没有任何作用。

基本上,我有一个Quizz应用程序,显示了一个问题,用户需要填写几个UITextFields来回答问题(即,如果答案是VENICE,则将显示6 UITextFields,每1个字母)。

它能够检测到UITextFields中的一个字符,一旦用户按下了一个键,它将跳至下一个UITextField。我使用UITextField的标记和方法becomeFirstResponder

问题是当UITextField为空时,我想检测退格键,所以我将跳到上一个UITextField

我已经尝试过Jacob Caraballo(Detect backspace in empty UITextField)的解决方案,但不确定如何将其与现有的UITextField一起使用。

例如,我尝试过:

 // @IBOutlet weak var textField1: UITextField!
    @IBOutlet weak var textField1:MyTextField!

但是打电话给代表

textField1.myDelegate = self

崩溃

我还注意到,使用Jacob的解决方案,我将无法检查哪个UITextField被用作func textFieldDidDelete()并没有一个UITextField作为参数,将需要检查其标签,即

If textField.tag == 5 {
   textField4.becomeFirstResponder()
}

对此有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

如果使用Jacob的解决方案,则将使用当前的deleteBackward实例调用UITextField方法。因此,您可以向该UITextField类添加一个协议,并将其传递回视图。 像这样:

protocol MyTextFieldDelegate: class {
   func backwardDetected(textField: MyTextField)
}

class MyTextField: UITextField {
   weak var myTextFieldDelegate: MyTextFieldDelegate?

   override func deleteBackward() {
     super.deleteBackward()

     self.myTextFieldDelegate?.backwardDetected(textField: self)
   }
}