2009-12-12 40 views
0

有什么办法来当收到一个UISearchBar完成通知(例如取消按钮,点击或以其他方式失去焦点。如何获取UISearchBar隐藏通知?

我们没有进入的UITextField里面,我也可以观测附加到它。

我可以通知当keyboardWillHide,但我有另一个文本字段,所以它可以是一个,而且它的键盘皮之前处于非活动状态,所以没有爱。

我有机会获得UISearchBarDelegate和UISearchDisplayController(Delegate)。

谁能告诉我在哪里看?是否有可供选择的所有通知的主列表?

回答

1

这些方法应该为你做它:

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar;  // called when text ends editing 
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar;  // called when keyboard search button pressed 
- (void)searchBarBookmarkButtonClicked:(UISearchBar *)searchBar; // called when bookmark button pressed 
- (void)searchBarCancelButtonClicked:(UISearchBar *) searchBar; // called when cancel button pressed 

这些都是UISearchBarDelegate委托方法。通过规则,委托方法比添加通知观察者更加紧密。斯坦福大学的iPhone视频中提到了这一点。虽然我自己使用通知慷慨,并没有发现他们的问题。

+0

searchBarCancelButtonClicked适用于其中一种情况,但在我的应用中最常用的情况是用户点击搜索栏和键盘之间的空白区域,这会使searchDisplay消失。没有委托方法被调用。 – kbanman 2009-12-13 04:40:36

+0

您可以在搜索栏和键盘之间放置一个空间大小的按钮,并使其仅在出现键盘时显示,并在单击该空间时再次将其删除。你可以像[self addSubview:button];当键盘出现时或者当搜索栏开始编辑以及单击该空间时,用户将基本上点击一个不可见的按钮,并且您可以通过resignFirstResponder关闭键盘并从视图中移除该按钮。 – 2009-12-13 13:34:10

0

一般情况下,如果Apple文档中没有“通知”部分的类,则没有可以公开提供给该类的通知。

我会用中坦的使用委托的建议。