退格键iOS的通知

时间:2012-09-04 08:29:15

标签: ios uitextfield

有没有办法获取用户何时按下UITextField上的退格键的通知,即使该字段为空?

当用户在空字段上退格时,我希望能够触发一些代码。

4 个答案:

答案 0 :(得分:0)

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(keyPressed:) name: UITextFieldTextDidChangeNotification object: nil];

这是用户按下每个键的通知。然后你必须弄清楚(我认为在通知中是一个属性)按下了哪个键。

或者您可以使用textfield委托功能

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

找出按下的键

答案 1 :(得分:0)

由于您需要检测而不是文本被删除,但是当按下退格键时,您需要做的不仅仅是实现UITextFieldDelegate

阅读this blog post,了解UITextField如何将所有UIKeyInput方法转发给私有类UIFieldEditor。编写器在运行时动态地子类UIFieldEditor以检测这些事件。

希望这能指出你正确的方向!

答案 2 :(得分:0)

我可以想到一种技术可以让你得到你想要的东西,但它会采取一些代码。实质上,始终在字符串的前面保留一个Unicode“空格”字符。我没有我的书,但你可以使用一个非常薄的空间角色。

您将把大部分代码放在这里:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
  • 当字段开始编辑时,使用空格
  • 为任何字符串添加前缀
  • 当用户附加在shouldChangeCharactersInRange中看到的文本时,请附加它。
  • 如果用户尝试删除最后的最后一个字符或包含它的范围,则返回NO,进行更改,然后添加回前导空格字符。
  • 当textField完成编辑时,删除前导空格

答案 3 :(得分:0)

这将检测退格。现在,您可以在按下退格键时执行任何操作。

 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
    {
        if (textField==txtMobileNo)
        {

            const char * _char = [string cStringUsingEncoding:NSUTF8StringEncoding];
            int isBackSpace = strcmp(_char, "\b");

            if (isBackSpace == -8) {
                NSLog(@"isBackSpace");

                if (textField.text.length == 9)
                {

                }

                return YES; // is backspace
            }
            else if (textField.text.length == 10) {
                return YES;
            }
        }
        return NO;
    }