2011-05-18 69 views
0

嘿家伙,所以我在我的视图中有这个搜索栏以及它下面的许多按钮。因此,当点击搜索栏时,会弹出一个键盘,但是我希望用户能够点击搜索栏下方和键盘上方的任何位置以退出搜索模式。我已经清理了一下,发现了一个解决方案,建议我创建一个不可见的按钮,它可以拦截触摸事件,我可以使用它来从搜索栏中退出第一响应者状态。当我不需要它时,我只能隐藏/禁用按钮,以便它下面的按钮可以正确地点击?错误。 setHidden也不setEnabled:没有伎俩。下面是相关代码:使用堆叠UIButtons

//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]; 
} 

设置按钮来禁用或通过笔尖文件隐藏不帮我。或者按钮从不存在(我不能在搜索栏和键盘之间点击并让键盘消失)或者始终存在(我无法点击这个不可见按钮下方的任何按钮)。任何帮助赞赏。提前致谢!

回答

2
//touch event on button outsideSearchBarButton which is invisible 
- (IBAction)selectOutsideSearchBar:(id)sender { 
    NSLog(@"Selected outside search bar"); 
    [searchBar resignFirstResponder]; 
    outsideSearchBarButton.userInteractionEnabled = NO; 
} 

- (void)searchBarTextDidBeginEditing:(UISearchBar *)aSearchBar { 
    NSLog(@"searchbarTextDidBeginEditing"); 
    outsideSearchBarButton.userInteractionEnabled = YES; 
} 

执行此操作。

+0

是的,这是做的伎俩,显然我的旧代码工作以及...我意识到我愚蠢没有连接我的隐形按钮到IBOutlet变量outsideSearchBarButton,因此修改按钮的代码没有做任何事情。所以我的旧代码确实有效,但我觉得这是一个更优雅的解决方案,这就是为什么我将其标记为答案。 – Stunner 2011-05-18 05:37:07

1

转到界面构建器并选择搜索过程中要移除键盘的按钮,然后从上述菜单中选择布局并选择发回。然后在巡视窗口中将按钮样式设置为自定义。

希望这有助于你.......

+0

+代表描述,我不得不选择按钮样式自定义,我已经知道,但我认为这可能是有用的其他人。 – Stunner 2011-05-18 05:38:16