获取搜索栏iOS 7.1的文本字段

时间:2014-03-13 00:02:15

标签: uitextfield uisearchbar ios7.1

有没有人知道如何从iOS 7.1上的任何UISearchBar获取UITextField,我需要更改字体和搜索图标,但旧代码不适用于新版本7.1,感谢您的帮助。

这是获取UITextField的旧代码,这仅适用于小于7.1的版本

UITextField * txfSearchField = [default_search_bar valueForKeyPath:@“_ searchField”];

2 个答案:

答案 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;
            }
        }
    }