我正在从我的本地数据库实现一个搜索栏,当用户输入信息时从db搜索。问题是我将最近的字符和之前的字符连接起来然后发送给搜索。如何删除字符(最后一个) )当按下后退键时。我正在使用
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
感谢您的回复
答案 0 :(得分:17)
您可以在此方法之后获取应该位于文本字段中的字符串:
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
neString
您可能可以“按原样”使用搜索数据库。
如果您只是想在用户删除textField中的某些字符时获取该事件 - 那么您可以通过以下方式进行检查:
if ([string length] == 0 && range.length > 0)
//Some characters deleted
答案 1 :(得分:3)
对于快速用户:
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
}
答案 2 :(得分:2)
更好的想法 - 在textField:shouldChangeCharactersInRange:replacementString:设置条件以在没有更多字符时返回NO ...
if ((range.location == 0) && (string.length == 0))
{
NSLog(@"is cleared!");
return NO;
}
return YES;
答案 3 :(得分:0)
if (self.textView.text.length > 0)
{
[self.textView deleteBackward];
}