Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
Iphone UITextField如何检查是否按了删除键_Iphone_Ios_Uitextfield - Fatal编程技术网

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

Iphone UITextField如何检查是否按了删除键,iphone,ios,uitextfield,Iphone,Ios,Uitextfield,我正在从本地数据库中实现一个搜索栏,当用户输入信息时从数据库中搜索。问题是我搜索最近的字符和以前的字符,然后将其发送搜索。当按下back键时,如何删除字符(最后一个)。我使用 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string -(BOOL)textField:(UITextField*)textFi

我正在从本地数据库中实现一个搜索栏,当用户输入信息时从数据库中搜索。问题是我搜索最近的字符和以前的字符,然后将其发送搜索。当按下back键时,如何删除字符(最后一个)。我使用

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string -(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串
感谢您的回复

使用此方法后,您可以获得文本字段中的字符串:

NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
newString
您可能可以使用“原样”来搜索数据库

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

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

更好的主意-在文本字段中:shouldChangeCharactersRange:replacementString:设置一个条件以在没有更多字符时返回NO

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

return YES;
对于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
}

范围。位置不总是0。用户可以从其他位置删除。
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
}