web-dev-qa-db-ja.com

iOS 13カスタムUISearchBar _searchFieldクラッシュ

新しい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で同じコードを書く方法を知っている場合は、それを回答に追加できます。

幸せなコーディング!

2
Filippo

私のプロジェクトはObjective Cにあり、XCode1もサポートする必要があります。2日間の頭痛の後、次の日が私の一日を救いました:

txfSearchField = [_searchBar valueForKey:@"searchField"];

古いコードから_を削除するだけです!!!

Swiftでも同じように使用できます。

それが誰かを助けることを願っています!

1
guru