iOS7 UISearchBar取消按钮文本未显示。按钮看起来不可见

时间:2013-10-21 17:34:49

标签: ios ios7 uisearchbar uisearchbardelegate

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

enter image description here

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

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

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

enter image description here

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

6 个答案:

答案 0 :(得分:7)

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

_searchBar.tintColor = [UIColor redColor];

如何创建UISearchBar?

答案 1 :(得分:5)

我不知道它是苹果或预期的错误,但在navigationController中似乎没有显示取消按钮。尝试将搜索栏添加到视图中,然后再将其添加到导航控制器。

UIView *searchBarView = [[UIView alloc] initWithFrame:[searchBar bounds]];
[searchBarView addSubview:searchBar];
self.navigationItem.titleView = searchBarView;

答案 2 :(得分: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之前,它是搜索栏的直接子视图。

答案 3 :(得分:-1)

这不是错误,请确保使用背景颜色显示色调颜色。enter image description here

答案 4 :(得分:-1)

  

_searchBar.backgroundImage =&lt; #Some Color#&gt ;;   _searchBar.backgroundColor =&lt; #Some Color#&gt ;; //取消按钮颜色。

答案 5 :(得分:-1)

通过以上答案,我无法找出正确的答案。     由于这是一个非常古老的问题,但是如果有人遇到这个问题并且他们使用了Storybaord,那么在Storybaord中有一个选项(即点击UISearchbar,然后转到Attribute Inspector,在Options中查找“Show Cancel Button”)。请参阅屏幕截图enter image description here