2013-10-23 99 views
3

在iOS 7中,當用戶以前在UISearchBar中清除文本時,藍色的「搜索」按鈕將被禁用。有什麼方法可以改變它,所以它總是啓用?我希望用戶即使在沒有文字的情況下也能點擊「搜索」,以顯示列表中的所有項目,而不是通過搜索詞條進行過濾。 (目前,當用戶試圖清除以前的搜索詞,藍色的搜索按鈕被禁用。)當字段爲空時,爲UISearchBar啓用「搜索」按鈕? (iOS 7)

我可能觸發我委託的searchBarTextDidEndEditing回調一個新的搜索,使關閉鍵盤按鈕導致刷新列表所有結果......但理想情況下,我希望藍色的搜索按鈕即使在該字段中沒有文本時也可用。這可能嗎?

回答

0

快速瀏覽頭文件後,它看起來像你想要完成的事情並不是他們想要使用的UISearchBar。爲了得到你想要的東西,你可能需要使用一個普通的文本字段而沒有所有的搜索條件。

這就是說,我有一個主要工作的黑客。它在不使用時使用虛擬字符串填充搜索欄。當你輸入你的第一個字符時,在搜索按鈕被禁用的地方會有一秒鐘的時間。但在大多數情況下,它可以讓你想要的東西:

NSString *kDummyString = @" "; 

@implementation CDViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.searchBar.searchBarStyle = UISearchBarStyleMinimal; 
    self.searchBar.text = kDummyString; 
} 

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 
    if (searchText.length < 1) { 
     searchBar.text = kDummyString; 
    } 
} 

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range  replacementText:(NSString *)text 
{ 
    BOOL isPreviousTextDummyString = [searchBar.text isEqualToString:kDummyString]; 
    BOOL isNewTextDummyString = [text isEqualToString:kDummyString]; 
    if (isPreviousTextDummyString && !isNewTextDummyString && text.length > 0) { 
     searchBar.text = @""; 
    } 

    return YES; 
} 

@end 
9

蘋果在iOS中7.改變UISearchBar結構我已經找到了iOS的7和以前的IOS版本組合的解決方案。

- (void)searchBarTextDidBeginEditing:(UISearchBar *) bar 
{ 
    UITextField *searchBarTextField = nil; 
    NSArray *views = ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0f) ? bar.subviews : [[bar.subviews objectAtIndex:0] subviews]; 
    for (UIView *subview in views) 
    { 
     if ([subview isKindOfClass:[UITextField class]]) 
     { 
      searchBarTextField = (UITextField *)subview; 
      break; 
     } 
    } 
    searchBarTextField.enablesReturnKeyAutomatically = NO; 
} 
+0

它確實有效,但似乎searchDisplayController由於某種原因不顯示單元格。 –

+0

for searchDisplayController,我要添加這個http://stackoverflow.com/a/16771901/1537178 –

相關問題