2011-04-01 77 views
6

我正在从本地数据库实现一个搜索栏,从用户输入信息的数据库搜索。问题是,我concat最近的字符和以前的字符,然后发送它的搜索我可以。如何去除字符(最后一个),当返回键是pressed.I使用UITextField如何检查是否按下删除键

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

感谢您的答复

回答

17

你可以得到应该是在文本字段后,该字符串方法:

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

而那neString你可能会使用'原样'来搜索数据库。

如果你只想当用户删除文本框一些字符以获取事件 - 那么你可以检查它通过以下方式:

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

更好的主意 - 在文本框:shouldChangeCharactersInRange:replacementString:设立条件返回NO时,有没有更多的字符...

if ((range.location == 0) && (string.length == 0)) 
{   
    NSLog(@"is cleared!"); 
    return NO; 
} 

return YES; 
+0

'range.location'不总是0.用户可以从其他位置删除。 – Daniel 2015-06-10 08:04:56

0
if (self.textView.text.length > 0) 
{ 
    [self.textView deleteBackward]; 
} 
3

为SWIFT用户:

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 
} 
相关问题