作者:飞轶尘埃_130 | 来源:互联网 | 2022-10-20 16:05
在新的iOS 13中,尝试使用以下方法更改UISearchBar textField属性时发生崩溃 valueForKey:@"_searchField"
现在看来,苹果已经改变了一些东西。
我已经使用以下自定义方法创建了UIView的子类,现在看来可以了!
- (UIView *)findSubview:(NSString *)name resursion:(BOOL)resursion
{
Class class = NSClassFromString(name);
for (UIView *subview in self.subviews) {
if ([subview isKindOfClass:class]) {
return subview;
}
}
if (resursion) {
for (UIView *subview in self.subviews) {
UIView *tempView = [subview findSubview:name resursion:resursion];
if (tempView) {
return tempView;
}
}
}
return nil;
}
您可以简单地以这种方式调用此方法来更改UITextField属性:
UITextField *textField = (UITextField*)[self findSubview:@"UITextField" resursion:YES];
显然,这是一个Objective-c片段,如果有人知道如何快速编写相同的代码,则可以将其添加到答案中。
编码愉快!
1> 小智..:
我不确定是否有帮助,但是UISearchBar具有新searchTextField
属性,允许您访问其UISearchTextField以及UITextField:
let searchBar = UISearchBar()
var searchField : UITextField
if #available(iOS 13.0, *) {
searchField = searchBar.searchTextField
} else {
searchField = //Your original method
}