使用堆积的UIButtons

时间:2011-05-18 05:13:17

标签: iphone objective-c cocoa-touch uibutton touch-event

嘿伙计们,所以我在我的视图中有这个搜索栏以及它下方的许多按钮。因此,当点击搜索栏时,会弹出一个键盘,但是我希望用户能够点击搜索栏下方和键盘上方的任何位置以退出搜索模式。我一直在搜索SO,并且遇到了一个解决方案,它建议我创建一个隐藏按钮,拦截触摸事件,我可以使用它来从搜索栏中退出第一响应者状态。我可以在不需要时隐藏/禁用按钮,以便可以轻按它下方的按钮?错误。 setHiddensetEnabled:没有做到这一点。以下是相关代码:

//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文件将按钮设置为禁用或隐藏对我没有任何帮助。按钮从不存在(我无法在搜索栏和键盘之间单击并且键盘消失)或者始终存在(我无法单击此隐藏按钮下方的任何按钮)。任何帮助赞赏。提前谢谢!

2 个答案:

答案 0 :(得分: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;
}

这样做。

答案 1 :(得分:1)

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

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