我希望这是一个简单的问题。
我有一个显示取消按钮的搜索栏:
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar{
[searchBar setShowsCancelButton:YES animated:YES];
}
唯一的问题是取消按钮上的文字没有显示。
按钮显然是因为我可以点击它但显示按钮时没有文字出现。它好像按钮是不可见的。代码在iOS6中运行良好但现在在iOS7中我遇到了这个问题。有什么想法?我正在使用UISplitViewController,我的搜索栏位于MasterViewController的navigationItem.titleView中。
答案 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)
这不是错误,请确保使用背景颜色显示色调颜色。
答案 4 :(得分:-1)
_searchBar.backgroundImage =&lt; #Some Color#&gt ;; _searchBar.backgroundColor =&lt; #Some Color#&gt ;; //取消按钮颜色。
答案 5 :(得分:-1)