【问题标题】:iOS7 UISearchBar cancel button text not showing. Button appears invisibleiOS7 UISearchBar 取消按钮文本未显示。按钮显示不可见
【发布时间】:2013-10-30 07:59:22
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: ios ios7 uisearchbar uisearchbardelegate


    【解决方案1】:

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

    _searchBar.tintColor = [UIColor redColor];

    如何创建 UISearchBar?

    【讨论】:

    • 我认为这可能是问题所在,但我尝试了不同的色调并完全去除了色调,但没有任何区别。我以编程方式创建搜索栏。它被插入到一个 UIView 中,该 UIView 被添加到 MasterViewController 的 navigationItem.titleView 中。
    • 我的背景图片有问题,但这也有帮助。
    【解决方案2】:

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

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

    【讨论】:

    • 我已经尝试过了,但是没有用。所做的只是添加没有动画的按钮,但它仍然不可见。我以编程方式创建了搜索栏,因此没有插座可以仅连接正确分配的委托,因为委托方法都在工作。
    • @kyzer1978 我错过了关于它在导航项中的部分。我更新了我的答案
    • 谢谢。我也试过了,但没有运气。我不认为将它放在导航控件中是问题,因为我的应用程序中有另一个搜索栏在不同的 tableViewController 上,它有同样的问题,但它在 tableview 标题而不是导航控制器中。
    • @kyzer1978 你能创建一个测试项目并上传到某个地方吗?
    • 我刚刚想通了。它与我使用的背景图像有关。不过感谢您的帮助。
    【解决方案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 之前,它是搜索栏的直接子视图。

    【讨论】:

      【解决方案4】:

      这不是错误,请确保您的背景颜色可以看到色调。

      【讨论】:

        【解决方案5】:

        _searchBar.backgroundImage = ; _searchBar.backgroundColor = ; // 取消按钮颜色。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-09-18
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多