【问题标题】:Working With Stacked UIButtons使用堆叠的 UIButtons
【发布时间】:2011-05-18 05:13:16
【问题描述】:

大家好,我的视图中有这个搜索栏以及它下方的许多按钮。因此,当点击搜索栏时,会弹出一个键盘,但是我希望用户能够单击搜索栏下方和键盘上方的任意位置以退出搜索模式。我一直在搜寻 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 文件将按钮设置为禁用或隐藏对我没有任何帮助。该按钮永远不存在(我无法在搜索栏和键盘之间单击并让键盘消失)或始终存在(我无法单击此不可见按钮下方的任何按钮)。任何帮助表示赞赏。提前致谢!

【问题讨论】:

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


    【解决方案1】:
    //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;
    }
    

    这样做。

    【讨论】:

    • 是的,这成功了,显然我的旧代码也能正常工作......我意识到我愚蠢地没有将我的不可见按钮连接到 IBOutlet 变量 outsideSearchBarButton,因此修改按钮的代码不是t 做任何事。所以我的旧代码确实有效,但是我觉得这是一个更优雅的解决方案,这就是我将其标记为答案的原因。
    【解决方案2】:

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

    希望对你有所帮助.......

    【讨论】:

    • + rep 用于描述我必须选择按钮样式自定义,我已经知道了,但我认为这对其他人有用。
    猜你喜欢
    • 1970-01-01
    • 2011-05-01
    • 2021-07-26
    • 1970-01-01
    • 2021-10-13
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    相关资源
    最近更新 更多