searchBarSearchButtonClicked不能与shouldChangeTextInRange一起使用

时间:2013-02-26 12:34:24

标签: ios uisearchbar uisearchbardelegate

我有以下UISearchBar委托方法,该方法可以自行运行(仅在单独使用时调用它)。

-(void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
    [self downloadFruits:searchBar.text];
    [self.view endEditing:YES];
}

当我添加另一个UISearchBar委托方法时,前一个停止工作(它不再被调用)。

#define CHARACTERS @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz _-."
#define CHARACTERS_NUMBERS  [CHARACTERS stringByAppendingString:@"1234567890"]

-(BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    NSCharacterSet *unacceptedInput =
    [[NSCharacterSet characterSetWithCharactersInString:CHARACTERS_NUMBERS] invertedSet];
    // If array has more than one entry, there was at least one unacceptable character
    if ([[text componentsSeparatedByCharactersInSet:unacceptedInput] count] > 1)
        return NO;
    else
        return YES;
}

它们中的每一个都可以很好地工作,但第一个(搜索按钮)不在一起

2 个答案:

答案 0 :(得分:3)

我认为你应该将\ n添加到CHARACTERS

#define CHARACTERS @"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz _-.\n"

答案 1 :(得分:0)

我认为第二种方法始终返回NO,这使得第一种方法不被称为