我知道这个问题听起来很重复,但是看几个答案,对我来说还没有任何作用。
基本上,我有一个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()
}
对此有任何帮助吗?
答案 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)
}
}