如何检测长按Backspace键的时间?

时间:2011-07-20 15:14:44

标签: objective-c ios

我正在开发一个iOS项目,我正在尝试检测何时长按退格键。

我正在使用填充了大量文本的UITextView,然后按下退格键。首先,通过char删除文本,然后删除整个文本。

我正在使用此方法来检测所有更改:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

我观察到虽然文本被char删除,但是这个方法被调用,但是当整个文本被删除时,没有任何事情发生。

对此有何想法?

非常感谢。

2 个答案:

答案 0 :(得分:3)

这将检测退格

-(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");

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

答案 1 :(得分:1)

您可以创建自定义后退键(或在标准后面叠加视图),然后使用UITouch。因此,检查touchesBegan并启动一个计时器,每隔x秒从字符串中删除一个字符。触摸时终止计时器。