在 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 以使 text
和 placeholder
工作?
- (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?
如何在iOS 7中更改文本UISearchBar的取消按钮颜色?