UIToolbar 中的 UISearchBar 不会显示取消按钮

Posted

技术标签:

【中文标题】UIToolbar 中的 UISearchBar 不会显示取消按钮【英文标题】:UISearchBar within a UIToolbar won't show cancel button 【发布时间】:2010-12-07 18:01:12 【问题描述】:

我有一个 UISearchBar 作为 UIToolbar 内的 UIBarButtonItem 嵌套。基本功能有效,但取消按钮和范围栏拒绝显示。我尝试在界面生成器中启用它们,也尝试手动调用[searchBar setShowsCancelButton:YES],但两种方法都不起作用。有什么想法吗?

这是在 iPad 上。我在 ios 3 中尝试过,在 4.2 中也无法使用。

【问题讨论】:

【参考方案1】:

您需要用另一个视图包装 UISearchBar。

UISearchBar *searchBar = [UISearchBar new];
UIView *searchBarContainer = [[UIView alloc] initWithFrame:searchBar.frame];
[searchBarContainer addSubview:searchBar];
UIBarButtonItem *searchBarItem =
    [[UIBarButtonItem alloc] initWithCustomView:searchBarContainer];

【讨论】:

【参考方案2】:

您只是遇到了 UISearchBar 工作方式的限制。一种解决方法是将 UISearchBar 放在 UIToolbar 之上,而不是让它真正存在于工具栏中。这在视觉上很有效,因为搜索栏的绘制就像工具栏一样 - 它们的渐变是相同的。

【讨论】:

【参考方案3】:

真的有必要在搜索栏中使用取消按钮吗?只需使用 textDidChange 方法查看字符串是否已被清除并使用它来执行与取消相同的操作。

【讨论】:

所以你是说每当用户删除最后一个字符时,键盘应该关闭并结束编辑?这似乎是应用程序方面的冒昧行为。

以上是关于UIToolbar 中的 UISearchBar 不会显示取消按钮的主要内容,如果未能解决你的问题,请参考以下文章

当 UISearchBar 变为活动状态时调整 UIToolbar 的大小

UIToolbar 内部的 UIView 内部的 UISearchBar 背景颜色问题

使 UIToolBar 和 UISearchBar 具有哑光黑色背景

Black Opaque UIToolbar 和 UISearchBar 看起来差别太大了

为啥黑色半透明 UIToolbar 的顶部与黑色半透明 UISearchBar 不同,如何使它们看起来相同?

为啥从搜索栏退出键盘后会留下 UIToolbar?