新しいiOS 13では、valueForKey:@"_searchField"
を使用してUISearchBar textFieldプロパティを変更しようとするとクラッシュしました
Appleが何かを変更したようです。
次のカスタムメソッドを使用して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スニペットであり、もし誰かがSwiftで同じコードを書く方法を知っている場合は、それを回答に追加できます。
幸せなコーディング!
私のプロジェクトはObjective Cにあり、XCode1もサポートする必要があります。2日間の頭痛の後、次の日が私の一日を救いました:
txfSearchField = [_searchBar valueForKey:@"searchField"];
古いコードから_を削除するだけです!!!
Swiftでも同じように使用できます。
それが誰かを助けることを願っています!