【发布时间】:2011-05-18 05:13:16
【问题描述】:
大家好,我的视图中有这个搜索栏以及它下方的许多按钮。因此,当点击搜索栏时,会弹出一个键盘,但是我希望用户能够单击搜索栏下方和键盘上方的任意位置以退出搜索模式。我一直在搜寻 SO 并遇到了一个解决方案,该解决方案建议我创建一个不可见的按钮来拦截触摸事件,我可以使用该按钮从搜索栏中退出第一响应者状态。当我不需要它时,我只能隐藏/禁用按钮,以便可以点击它下面的按钮,对吗?错误的。 setHidden 和 setEnabled: 都没有做到这一点。以下是相关代码:
//touch event on button outsideSearchBarButton which is invisible
- (IBAction)selectOutsideSearchBar:(id)sender {
NSLog(@"Selected outside search bar");
[searchBar resignFirstResponder];
[outsideSearchBarButton setEnabled:NO];
[outsideSearchBarButton setHidden:YES];
}
- (void)searchBarTextDidBeginEditing:(UISearchBar *)aSearchBar {
NSLog(@"searchbarTextDidBeginEditing");
[outsideSearchBarButton setHidden:NO];
[outsideSearchBarButton setEnabled:YES];
}
通过 nib 文件将按钮设置为禁用或隐藏对我没有任何帮助。该按钮永远不存在(我无法在搜索栏和键盘之间单击并让键盘消失)或始终存在(我无法单击此不可见按钮下方的任何按钮)。任何帮助表示赞赏。提前致谢!
【问题讨论】:
标签: iphone objective-c cocoa-touch uibutton touch-event