ios - UITextfield 不能作为 iOS 7 中 UISearchBar 的 subview ?

标签 ios uitextfield uinavigationbar ios7 uisearchbar

这段代码在 iOS 6 中工作得很好,但在 iOS 7 中,导航栏中的文本字段是灰色的,并且不可点击?看看这张图片的区别

enter image description here

可能出了什么问题?我不知道他们在 iOS 7 中到底做了什么改变,也不知道从哪里开始寻找解决这个问题的方法......

/问候

UITextField *sbTextField = (UITextField *)[searchBar.subviews lastObject];
[sbTextField removeFromSuperview];

CGRect rect = searchBar.frame;
rect.size.height = 32;
rect.size.width = 210;
sbTextField.frame = rect;
 // [sbTextField setKeyboardType:UIKeyboardTypeNumbersAndPunctuation]; Not working in iOS7
 // [sbTextField setPlaceholder:NSLocalizedString(@"HintSearchExercise", nil)]; Not working in iOS 7

[sbTextField setAutoresizingMask:UIViewAutoresizingFlexibleBottomMargin];
[searchBar removeFromSuperview];

UIBarButtonItem *searchBarNavigationItem = [[UIBarButtonItem alloc] initWithCustomView:sbTextField];

[[self navigationItem] setLeftBarButtonItem:searchBarNavigationItem];

最佳答案

在 ios7 中,[searchBar.subviews lastObject] 不是文本字段,而是一个 UIView 实例,充当围绕控制。

cocktailicious有同样的问题,我计划在 UISearchBar 上使用以下类别:

@interface UISearchBar (Workarounds)
@property (readonly, nonatomic) UITextField *textField;
@end

@implementation UISearchBar (Workarounds)
- (UITextField *)textField
{
    for (UIView *view in [self subcontrols]) {
        if ([view isKindOfClass:[UITextField class]]) {
            return (UITextField *)view;
        }
    }
    return nil;
}

- (NSArray *)subcontrols
{
    return self.subviews.count == 1 ? [self.subviews.firstObject subviews] : self.subviews;
}
@end

- subcontrols 方法在这里发挥了作用。

关于ios - UITextfield 不能作为 iOS 7 中 UISearchBar 的 subview ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18993773/

相关文章:

ios - 苹果的AVCamera夜间模式

ios - 第二次点击 UITextField(在 UITableViewCell 子类中)意外地关闭键盘

swift - SwiftUI-UITextField中的状态更改导致frameWidth不受控制地增长,并且忽略了边界/框架

ios - 如何覆盖 "default"导航栏?

ios - 为导航栏设置与标签栏相同的视觉效果

ios - 使用 Swift 在 xcode 11 中使用灵活高度动画化导航栏

ios - 如何使用 swift 以编程方式解除警报?

ios - KeychainItemWrapper 链接错误

ios - 是否可以使用 ARCore 在 iOS 上实现面部增强功能?

ios - 全局访问 UIalertview 中的文本字段数据