8

我已经实现了搜索栏,一旦用户在搜索栏中获得焦点,它就会显示取消按钮。为此,我已经searchBar.showsCancelButton = YES;在我的searchBarTextDidBeginEditing方法中写了。在searchBarSearchButtonClicked中,我放弃了键盘,以便用户可以查看完整的 tableview。

问题:此时搜索栏取消按钮没有响应。它仅在搜索栏再次获得焦点时才会响应。这是搜索栏取消按钮的默认属性,还是我的代码中缺少某些内容。我想使用取消按钮而不再次在搜索栏中提供焦点。

4

3 回答 3

4

这是搜索栏取消按钮的默认行为。如果您想要其他功能,您可以取消选中搜索栏的取消按钮属性,并可以UIButton用作取消按钮。

于 2013-02-15T07:53:38.863 回答
4

是的,您可以让您的UISearchBar取消按钮响应。默认情况下它是禁用的,但您可以访问它的子视图,然后将启用设置为取消按钮。

for (id object in [mySearchBar subviews])
{
    if ([object isKindOfClass:[UIButton class]])
    {
        UIButton *searchBarCancelBtn = (UIButton*)object;
        [searchBarCancelBtn setEnabled:YES];
    }
}

如果您想要UISearchBar 文本字段中的其他逻辑自定义清除按钮,请遵循此答案

于 2013-02-15T10:43:40.773 回答
3

我认为它是当它获得焦点时的默认行为,UISearchBar然后才会启用取消按钮。UISearchBar当它没有焦点时,您无法获得取消按钮事件。

所以我对完成你的任务的建议是,

  • 创建工具栏
  • 插入UIBarButtonItem自定义视图为UISearchBar
  • 插入UIBarButtonItem名为“取消”的操作
于 2013-02-15T08:10:59.567 回答