我有一个搜索栏,可以在用户键入时过滤联系人,但我还需要直接访问文本字段,以防他们键入不在通讯簿中的姓名。所以,我需要同时让 UISearchBarDelegate 和 UITextFieldDelegate 工作。
在 iOS 6 中,这工作得很好。在 iOS 7 中,一旦我找到搜索栏文本字段并设置其委托,一切都会中断。键盘不再响应,没有文字出现等。
这是视图出现时的代码:
UITextField *searchBarTextField = nil;
for (UIView *searchBarSubview in [mySearchBar subviews]) {
if ( [searchBarSubview isKindOfClass:[UITextField class] ] ) {
// ios 6 and earlier
searchBarTextField = (UITextField *)searchBarSubview;
} else {
// for ios 7 what we need is nested inside another container
for (UIView *subSubView in [searchBarSubview subviews]) {
if ( [subSubView isKindOfClass:[UITextField class] ] ) {
searchBarTextField = (UITextField *)subSubView;
}
}
}
}
if (searchBarTextField) {
[searchBarTextField setReturnKeyType:UIReturnKeyNext];
// TODO: in ios 7, setting this breaks everything. search stops working, search keyboard no longer responds, nothing.
[searchBarTextField setDelegate:self];
}
我很茫然。有人知道如何在 iOS 7 中使用它吗?谢谢。