5

我希望这是一个简单的问题。

在此处输入图像描述

我有一个显示取消按钮的搜索栏:

- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
    [searchBar setShowsCancelButton:YES animated:YES];
}

唯一的问题是取消按钮上的文本没有显示。

在此处输入图像描述

按钮显然在那里,因为我可以单击它,但显示按钮时没有文本出现。好像按钮是不可见的。该代码在 iOS6 中运行良好,但现在在 iOS7 中我遇到了这个问题。任何机构有任何想法?我正在使用 UISplitViewController,我的搜索栏位于 MasterViewController 的 navigationItem.titleView 中。

4

6 回答 6

9

可能你有清晰的色调,这是我可以成像尝试设置的唯一原因

_searchBar.tintColor = [UIColor redColor];

你如何创建 UISearchBar?

于 2013-10-21T18:09:19.843 回答
5

我不知道这是苹果的错误还是有意的,但在导航控制器中似乎没有显示取消按钮。尝试在将搜索栏添加到导航控制器之前将其添加到视图。

UIView *searchBarView = [[UIView alloc] initWithFrame:[searchBar bounds]];
[searchBarView addSubview:searchBar];
self.navigationItem.titleView = searchBarView;
于 2013-10-21T18:07:16.943 回答
3

我有同样的问题。按钮在那里,但 titleColor 与背景相同。我所做的修复它是搜索搜索栏的取消按钮子视图并将按钮的标题颜色设置为不同的颜色。请注意在显示取消按钮设置此项,如果在显示取消按钮之前,视图不存在。我的代码:

        [self.mySearchBar setShowsCancelButton:YES animated:YES];
        if ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0) {
            for(id subview in [self.mySearchBar subviews])
            {
                if ([subview isKindOfClass:[UIButton class]]) {
                    [self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
                    [self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];

                }
            }
        } else {
            for(id subview in [[[self.mySearchBar subviews] objectAtIndex:0] subviews])
            {
                if ([subview isKindOfClass:[UIButton class]]) {
                    [self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
                    [self.cancelButton setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
                }
            }
        }

另请注意,在 iOS 7 中,取消按钮隐藏在搜索栏的第一个子视图中。在 iOS 7 之前,它是搜索栏的直接子视图。

于 2013-11-07T09:13:31.697 回答
-1

_searchBar.backgroundImage = <#Some Color#>; _searchBar.backgroundColor = <#Some Color#>; // 取消按钮颜色。

于 2014-02-09T11:05:36.330 回答
-1

这不是错误,请确保色调颜色与您的背景颜色可见。在此处输入图像描述

于 2013-12-27T06:23:35.353 回答
-1

通过上面的答案,我无法找出正确的答案。因为这是一个非常古老的问题,但是如果有人遇到这个问题并且他们使用 Storybaord,那么 Storybaord 中有一个可用的选项(即点击 UISearchbar ,然后转到 Attribute Inspector 并在 Options 中查找“Shows Cancel Button”)。请参考截图在此处输入图像描述

于 2016-08-29T05:59:26.857 回答