不知道有没有别的什么的好的方法,最近在实现一个需求(点击搜索,然后输入搜索内容,显示搜索出来的结果,然后点击搜索结果,在当前页面显示所点击的结果的详细的信息)。遇到的问题是,点击搜索结果的时候,搜索的结果不隐藏,那么你就看不到被它挡着的东西了。
解决办法是
for (id view in subViews) {
if ([view isKindOfClass:[UIButton class]]) {
UIButton *cancelButton = (UIButton *)view;
[cancelButton setTitle:@"取消" forState:UIControlStateNormal];
// 获取点击"取消"button的响应事件(actionsForTarget 这种方法返回的是一个数组)
self.cancelSearchSELString = [[cancelButton actionsForTarget:mySearchBar forControlEvent:UIControlEventTouchUpInside] objectAtIndex:0];
// 响应通知,运行方法直接用上面获得的响应事件方法,转换一下(这是个知识点,能够扩展下)
[[NSNotificationCenter defaultCenter] addObserver:mySearchBar selector:NSSelectorFromString(self.cancelSearchSELString) name:@"cancelSearch" object:nil];
}
}
然后在点击事件中
[[NSNotificationCenter defaultCenter] postNotificationName:@"cancelSearch" object:nil];
// 公布---响应---取消通知
[[NSNotificationCenter defaultCenter] removeObserver:mySearchBar name:@"cancelSearch" object:nil];
就行了。