2014-02-14 115 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