在 iOS 7.1 中,UISearchBar 的文本和占位符属性不再起作用

Posted

技术标签:

【中文标题】在 iOS 7.1 中,UISearchBar 的文本和占位符属性不再起作用【英文标题】:In iOS 7.1, UISearchBar's text and placeholder properties don't work anymore 【发布时间】:2014-03-19 20:28:55 【问题描述】:

ios7.1开始,一直无法阅读文字,也无法设置UISearchBar的占位符。 text 属性总是返回 nil 并且搜索栏总是一个空白的白色矩形。在 iOS 7.0 及以下版本中,我没有遇到此类问题。 7.1 是否要求我以不同的方式对待 UISearchBars 以使 textplaceholder 工作?

- (void)viewDidLoad

    [super viewDidLoad];

    self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
    self.searchBar.placeholder = @"placeholder doesn't work in 7.1";
    [self.view addSubview:self.searchBar];

    self.button = [[UIButton alloc] initWithFrame:CGRectMake(0.0, 44.0, 100.0, 44.0)];
    self.button.backgroundColor = [UIColor redColor];
    [self.button setTitle:@"print text" forState:UIControlStateNormal];
    [self.button addTarget:self action:@selector(printSearchText) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:self.button]; 


- (void)printSearchText

    NSLog(@"print nil here: %@", self.searchBar.text);

【问题讨论】:

为我工作。我必须将 [self.view addSubview:self.searchBar] 添加到您的代码中 忘记了addSubview,但问题仍然存在。我确保我没有 UISearchBar 的 UIAppearance 可能会搞砸 我在 Xcode 中创建了一个空白的单视图项目,并将您的代码粘贴到视图控制器中。占位符文本出现并且搜索栏文本属性具有正确的字符串。我在 iPhone 模拟器和运行 7.1 的 iPhone 5s 上都进行了测试。您可能需要更仔细地查看您的代码。 是的。我还创建了一个空白项目,一切正常。我将检查导致问题的专门代码... 我也遇到了同样的问题。相同的构建在 iOS 7 中运行良好,但在 7.1 中缺少占位符。 【参考方案1】:

这可能与您的问题有关,也可能无关,但我们遇到了由我们在UISearchBar 上定义的类别引起的类似问题。我们添加了一个textField 属性,出于一些我不会讨论的骇人听闻的原因。看来 Apple 在 iOS 7.1 中添加了他们自己的内部 textField 属性,而我们的属性正在干扰它。

这是始终为您的类别方法/属性名称添加前缀的一个很好的理由。 :)

【讨论】:

我在 UISearchBar 类别中定义了 searchBar 属性。显然,iOS 7.1 将该属性添加到了框架中。

以上是关于在 iOS 7.1 中,UISearchBar 的文本和占位符属性不再起作用的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 10 的目标 c 中使用 uisearchbar?

UISearchBar 在 iOS 11 中增加导航栏高度

UISearchBar 在 iOS 7 中隐藏视图

如何在iOS 7中更改文本UISearchBar的取消按钮颜色?

在 iOS 8 中更改 UISearchBar 取消按钮文本

如何在 iOS7 中更改 UISearchBar 的 inputView?