2013-02-26 24 views
1

一起工作我有以下UISearchBar委託方法,它自己的作品(它是獨立時調用)。searchBarSearchButtonClicked與shouldChangeTextInRange

-(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; 
} 

他們每個人都工作得很好獨自但在一起的第一個(搜索按鈕)不叫

+0

這很奇怪。我覺得這兩個不應該互相干擾(一個是按鈕點擊,另一個是文本替換),但只是爲了安全起見,您可以嘗試從shouldChangeTextInRange返回YES並告訴我們結果(然後與之相同返回NO) – 2013-02-26 18:05:34

回答

3

我想你應該添加\ n到字符

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

我在想這個,謝謝指出。有用。 – Alex 2013-02-27 08:29:19

+1

不客氣。 – warchimede 2013-02-27 09:43:32

0

我認爲第二種方法總是返回NO這使第一不叫

+0

第二種方法自行工作,它假定它返回正確的值。 – Alex 2013-02-26 13:37:59

相關問題