0

伙计们,我不相信这对我来说是个问题。如果我在键盘上按下一个键, UITextField 委托会触发该功能:

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
       if ([string lenght]==0) NSLog("Backspace was pressed");
 }

但问题是:当文本为空并且我按退格键时,IS NOT 调用了这个函数。有没有办法检测在这种情况下按下了退格键?

或者我将不得不将此错误发送给Apple?

附言。我需要这个让光标转到上一个 UITextFild (如果有一个字符并按退格键,它可以工作)

4

2 回答 2

1

好吧,我不认为这是一个错误,因为文本字段是空的,因此范围内没有任何字符被更改,因此该方法没有被触发。Apple的UITextFieldDelegate 文档说:

每当用户在文本字段中键入新字符或删除现有字符时,文本字段都会调用此方法。

TextField 中没有现有字符,因此不会触发该方法。它无助于回答问题,但这不是 SDK 中的错误

为了获得您想要的行为,这里已经回答了这个问题:即使 UITextField 为空,我能否检测到删除键?

于 2011-08-26T14:19:02.423 回答
0

其实这不是bug。在这里,委托方法没有捕获事件,因为文本字段的任何值都没有变化。

这可以通过继承 UITextField 并将其添加为所需文本字段的自定义类来实现。然后重写方法“deleteBackward”,该方法将捕获所有退格事件。

Swift 中的代码:

override func deleteBackward() {
        super.deleteBackward()
        // Enter your stuff here
    }

还要确保您也在调用超级方法,因为它正在执行事件的基本功能。

于 2016-06-29T06:03:46.267 回答