男人,我不相信这对我来说是个问题。如果我按下键盘上的某个键,UITextField委托会触发该功能:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([string lenght]==0) NSLog("Backspace was pressed");
}
但问题是:当文本为空并按下退格键时,此函数IS NOT
被调用。在这种情况下有一种方法可以检测到退格被按下了吗?
或者我必须将此错误发送给Apple?
聚苯乙烯。我需要这个光标转到上一个UITextFild(如果有一个字符并按退格键,它可以工作)
答案 0 :(得分:1)
嗯,我不认为这是一个错误,因为textfield是空的,因此在范围内没有更改任何字符,因此该方法没有被触发。 Apple的UITextFieldDelegate Documentation说:
只要用户在文本字段中键入新字符或删除现有字符,文本字段就会调用此方法。
TextField中没有现有字符,因此不会触发该方法。它没有帮助回答这个问题,但它不是SDK中的错误
要获得您想要的行为,此问题已在此处得到解答:Can I detect the delete key even if the UITextField is empty?
答案 1 :(得分:0)
实际上这不是错误。这里的委托方法没有捕获事件,因为textfield的任何值都没有变化。
这可以通过继承UITextField并将其添加为所需文本字段的自定义类来实现。 然后覆盖方法“deleteBackward” 此方法将捕获所有退格事件。
Swift中的代码:
override func deleteBackward() {
super.deleteBackward()
// Enter your stuff here
}
同时确保你也在调用super方法,因为它正在执行事件的基本功能。