首页 文章

UITextField如何检查是否按下了删除键

提问于
浏览
6

我正在从我的本地数据库实现一个搜索栏,当用户输入信息时从db中搜索 . 问题是我将最近的字符和之前的字符连接起来然后发送给它进行搜索 . 如何在返回时删除字符(最后一个)按键是我正在使用的

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

谢谢你的回复

4 回答

  • 17

    您可以在此方法之后获取应该位于文本字段中的字符串:

    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    

    那个 neString 你可能会使用'as is'来搜索数据库 .

    如果您只想在用户删除textField中的某些字符时获取该事件 - 那么您可以通过以下方式进行检查:

    if ([string length] == 0 && range.length > 0)
      //Some characters deleted
    
  • 2

    对于快速用户:

    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    
        if string.characters.count == 0 && range.length > 0 {
            // Back pressed
            return false
        }
    
        return true
    }
    
  • 3

    更好的主意 - 在textField:shouldChangeCharactersInRange:replacementString:设置条件,当没有更多字符时返回NO ...

    if ((range.location == 0) && (string.length == 0))
    {        
        NSLog(@"is cleared!");
        return NO;
    }
    
    return YES;
    
  • 0
    if (self.textView.text.length > 0) 
    { 
        [self.textView deleteBackward]; 
    }
    

相关问题