Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何检测长按退格键的时间?_Objective C_Ios - Fatal编程技术网

Objective c 如何检测长按退格键的时间?

Objective c 如何检测长按退格键的时间?,objective-c,ios,Objective C,Ios,我正在做一个iOS项目,我试图检测何时长按backspace键 我正在使用一个充满大量文本的UITextView,然后我一直按下backspace键。首先逐字符删除文本,然后删除整个文本 我正在使用此方法检测所有更改: - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 我观察到,当文本被逐字符删除时,会调用此方法,但当整个

我正在做一个iOS项目,我试图检测何时长按backspace键

我正在使用一个充满大量文本的UITextView,然后我一直按下backspace键。首先逐字符删除文本,然后删除整个文本

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

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
我观察到,当文本被逐字符删除时,会调用此方法,但当整个文本被删除时,不会发生任何事情

有什么想法吗


非常感谢。

您可以创建一个自定义后退键(或在标准后退键的顶部覆盖一个视图),然后使用UITouch。因此,请检查TouchesStart的时间,并启动计时器,该计时器每x秒从字符串中删除一个字符。触摸并关闭计时器。

您可以创建一个自定义后退键(或在标准后退键上覆盖一个视图),然后使用UITouch。因此,请检查TouchesStart的时间,并启动计时器,该计时器每x秒从字符串中删除一个字符。触摸并关闭计时器。

这将检测退格

-(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;
}

这将检测退格

-(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;
}