是否有办法检测何时在空白的iPhone键盘上按下Backspace/ Delete键UITextField?我想知道什么时候Backspace只有在UITextField空的情况下被按下.
根据@Alex Reynolds在评论中提出的建议,我在创建文本字段时添加了以下代码:
[[NSNotificationCenter defaultCenter] addObserver:self
          selector:@selector(handleTextFieldChanged:)
              name:UITextFieldTextDidChangeNotification
            object:searchTextField];
收到此通知(handleTextFieldChanged调用函数),但Backspace在空字段中按键时仍然不会.有任何想法吗?
这个问题似乎有些混乱.我想在Backspace按下键时收到通知.而已.但是当解决方案UITextField已经空了时,解决方案也必须工作.
我正在寻找关于如何捕获退格事件的解决方案,大多数Stack Overflow答案都在Objective-C中,但我需要使用Swift语言.
首先,我为UITextField设置了委托并将其设置为self
self.textField.delegate = self;
然后我知道使用shouldChangeCharactersInRange委托方法来检测是否按下退格是所有代码都在Objective-C中.我需要在Swift中使用以下方法,如下所示.
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    const char * _char = [string cStringUsingEncoding:NSUTF8StringEncoding];
    int isBackSpace = strcmp(_char, "\b");
    if (isBackSpace == -8) {
        // NSLog(@"Backspace was pressed");
    }
    return YES;
}
可能重复:
检测UITextField中的退格
我想检测键盘上按下退格键的时间,即使a UITextField为空.
我试图使用ShouldChangeCharachtersInRange,但是当调用退格并且文本为空时,它不会被调用.
我怎么解决这个问题?
注意!这个问题不是这个或这个问题的重复!这是一个让事情变得更加清晰的新问题.
所以我已经按照上面帖子的所有说明进行操作,并且UITextField每次用户点击返回按钮时,我都会将其变为空白并移动到新位置.此外,我跟踪textView的输入,并在TextView的位置创建该文本的标签,如下所示:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField.text.length > 5) {
        CGRect labelFrame = CGRectMake(textField.frame.origin.x, textField.frame.origin.y, 0, 0);
        UILabel *label = [[UILabel alloc] initWithFrame: labelFrame];
        label.font = [UIFont fontWithName:@"HelveticaNeue" size:14];
        [label setText:textField.text];
        [label setTextColor: [BSFunctions getColorFromHex:@"3f3f3f"]];
        label.backgroundColor =[UIColor lightGrayColor];
        [label sizeToFit];
        [labelsArray addObject:label];
        [self.view addSubview: label];
        CGRect newTextFieldFrame = CGRectMake(labelFrame.origin.x + label.frame.size.width + 5, labelFrame.origin.y, 320, 30);
        NSLog(@"Rect is %@", NSStringFromCGRect(newTextFieldFrame));
        textField.frame = newTextFieldFrame;
        textField.text = @"\u200B";
    }    
    return YES;
}
我设置文本UITextField的文字是 …