2014-02-14 65 views
1

UITableView中,我隱藏了UISearchBar作爲應用啓動時的默認行爲。稍後,如果用戶需要搜索一個術語,則有UIButton操作會顯示UISearchBar和鍵盤。 我遇到的問題是執行搜索後,我不知道如何取消搜索或關閉UISearchBar。如果用戶點擊鍵盤上的搜索按鈕,鍵盤消失,這是可以的,但如果用戶點擊取消按鈕,任何事情都會發生。在顯示結果後關閉UISearchBar

這是我的代碼隱藏UISearchBar

- (void)hideSearchBar { 

    CGRect newBounds = self.tableView.bounds; 
    if (self.tableView.bounds.origin.y < 44) { 
     newBounds.origin.y = newBounds.origin.y + self.searchBar.bounds.size.height; 
     self.tableView.bounds = newBounds; 

    } 
} 

而且這是我的代碼顯示的UISearchBar和鍵盤:

- (IBAction)showSearchBar:(id)sender { 


    [self.searchBar becomeFirstResponder]; 
} 
+3

使用'searchBarCancelButtonClicked:'UISearchBar'的'委託方法和調用'hideSearchBar '。 – Akhilrajtr

回答

1
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 

以上是UISearchBar委託方法,它是當您按取消按鈕時用於管理UISearchBar

根據您的需求提供代碼。

諸如此類

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 
{ 
    searchBar.text = @""; // clear text of search 
    [searchBar resignFirstResponder]; // keyBoard is hide 
    [self.searchBar setShowsCancelButton:NO animated:YES]; // remove cancel button from searchBar 
    // Etc.. 
} 

編輯:

可以聲明和訪問UISearchBar諸如此類,

@interface myViewController : UIViewController <UISearchBarDelegate, UISearchBarDelegate> // add delegate and datasource to .h file 

@property (nonatomic, strong) UISearchBar *searchBar; 

而且.MUISearchBar

文件創建
self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f,38.0f,320.0f,0.0f)]; // set frame as you want. 
[self.searchBar sizeToFit]; 
self.searchBar.delegate = self; 
self.searchBar.tintColor = [UIColor colorWithRed:(93/255.f) green:(156/255.f) blue:(13/255.f) alpha:1.0f]; // set color as you want. 
[self.view addSubview:self.searchBar]; 
+0

謝謝你的建議,但我記錄你的方法,它從來沒有被稱爲... – mvasco

+0

@mvasco - 檢查我編輯的答案:) – iPatel

+0

這是我的界面部分:@interface ToDoItemsTableViewController:UITableViewController mvasco

1

試試這個,

使用UISearchBarsearchBarCancelButtonClicked:委託方法和調用hideSearchBar

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 

    [searchBar setText:@""]; 
    [searchBar resignFirstResponder]; 
    [self hideSearchBar]; 
} 

添加

- (void)viewDidLoad { 
    ... 
    self.searchBar.delegate = self; 
} 
+0

謝謝你的建議,但我正在記錄你的方法,它從未被稱爲... – mvasco

+0

你設置了'UISearchBar'的代表嗎?如果沒有設置它像self.searchBar.delegate = self; – Akhilrajtr

+0

這種方式和在哪裏? self.searchBar.delegate = self;如果是「自我」,則爲 – mvasco