有谁知道如何从 iOS 7.1 上的任何 UISearchBar 获取 UITextField,我需要更改字体和搜索图标,但旧代码不适用于新版本 7.1,感谢您的帮助。
这是获取 UITextField 的旧代码,仅适用于低于 7.1 的版本
UITextField *txfSearchField = [default_search_bar valueForKeyPath:@"_searchField"];
最佳答案
如果您属于 UISearchBar 的子类您可以使用简单的修复。
不知何故,初始化后 subview 中没有 UITextField 的实例。 但在 - (void)layoutSubviews 中你可以找到它。
所以解决方案是将搜索文本字段的代码移出 init。 您可以使用这个简单的方法,该方法适用于 7.1 之前的所有 iOS
- (UIView *)firstViewOfClass:(Class)class inSubviewsOfView:(UIView *)view
{
UIView *result = nil;
for (UIView *subview in view.subviews)
{
if ([subview isKindOfClass:class])
{
result = subview;
}
else
{
result = [self firstViewOfClass:class inSubviewsOfView:subview];
}
if (result)
{
break;
}
}
return result;
}
使用示例:
- (void)layoutSubviews
{
if (!self.textField)
{
self.textField = (UITextField *)[self firstViewOfClass:[UITextField class] inSubviewsOfView:self];
}
[super layoutSubviews];
// your code here.
}
关于uitextfield - 获取搜索栏的文本字段 iOS 7.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366476/