在iOS13之前,我們通常都是通過以下方式獲取UISearchBar的TextField
獲取路徑一:
UITextField*searchField = [bar valueForKey:@"_searchField"];
獲取路徑二:
?? ? ? for (UIView *view in bar.subviews.lastObject.subviews) {
? ? ? ? ? ? if([view isKindOfClass:NSClassFromString(@"UISearchBarTextField")]) {
? ? ? ? ? ? }
?? ? ? ?}
iOS13之前通過以上兩種情況都可獲得UISearchBar的TextField
但是!!!在iOS13后,通過以上兩種方式將無法在進行獲得UISearchBar的TextField了。
使用第一種情況的還會出現閃退。
接下來就是重點了。!!!
在iOS13中Apple引入了一個新的類叫UISearchTextField,并且在iOS13中引入了名為searchTextField的屬性。
@property (nonatomic, readonly) UISearchTextField *searchTextField;
在iOS13開始,我們可以通過這個屬性去獲取UISearchBar的TextField并且對齊進行自定義樣式。
筆者在項目中是這樣獲取到該屬性,并且對其進行自定義的。
UITextField *textField = bar.searchTextField;