有没有人知道如何从iOS 7.1上的任何UISearchBar获取UITextField,我需要更改字体和搜索图标,但旧代码不适用于新版本7.1,感谢您的帮助。
这是获取UITextField的旧代码,这仅适用于小于7.1的版本
UITextField * txfSearchField = [default_search_bar valueForKeyPath:@“_ searchField”];
答案 0 :(得分:1)
如果您在UISearchBar的子类中,则可以使用简单修复。
在init之后,子视图中没有UITextField的实例。 但是在 - (void)layoutSubviews中你可以找到它。
所以解决方案就是移动代码,从init中搜索textfield。 您可以使用这种简单的方法,该方法适用于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.
}
答案 1 :(得分:0)
你应该尝试像这样搜索:
for (UIView* subView in self.searchBar.subviews) {
for (UIView* searchView in subView.subviews) {
if ([searchView isKindOfClass:[UITextField class]]) {
self.searchTextField = (UITextField*)searchView;
break;
}
}
}