如何在键入时获取当前的搜索栏字符串

Sah*_*agi 8 iphone xcode objective-c ios5

在按下搜索栏时,我想获取已经输入的字符串.为此,我目前正在使用此方法:

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range     replacementText:(NSString *)text
{
    NSLog(@"String:%@",mainSearchBar.text);
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

但它返回前一个字符串.例如id我输入"jumbo",它显示jumb,当我按退格键删除一个项目并使其"jumb"时,它显示jumbo.即搜索栏上的上一个字符串.

我该怎么做才能得到当前的字符串?plsease帮助.谢谢

Fel*_*lix 13

在方法内部,您可以获得输入的文本:

NSString* newText = [searchBar.text stringByReplacingCharactersInRange:range withString:text]
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

let newText = (searchBar.text ?? "" as NSString).replacingCharacters(in: range, with: text)
Run Code Online (Sandbox Code Playgroud)


Don*_*mer 5

从中检索新文本最方便的委托方法是:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
Run Code Online (Sandbox Code Playgroud)

双方[searchBar text]searchText会返回新键入的文本. shouldChangeTextInRange故意报告旧文本,因为它允许您在编辑发生之前取消编辑.