UISearchBar を TopBar.m に次のように記述します。
_tempSearchBar =[[UISearchBar alloc]initWithFrame:CGRectMake(44, 0, 320 - 44, 43)];
_tempSearchBar.barStyle=UIBarStyleDefault;
_tempSearchBar.placeholder=@"搜索";
[self addSubview:_tempSearchBar];
結果はこのようになりました。
次に、別のクラスで UISearchDisplayController を次のように記述します。
_topBar.tempSearchBar.delegate = self;
_searchDisplayController = [[UISearchDisplayController alloc] initWithSearchBar:_topBar.tempSearchBar contentsController:self];
[_searchDisplayController setDelegate:self];
[_searchDisplayController setSearchResultsDataSource:self];
UISearchBarDelegate は次のようになります。
#pragma mark -
#pragma mark UISearchBarDelegate
- (void)searchBarTextDidBeginEditing:(UISearchBar *)searchBar
{
[_searchDisplayController setActive:YES animated:YES];
}
UISearchBar をクリックすると、このように表示され、searchBar のフレームが変更されます。
UISearchDisplayController をキャンセルすると、次のようになります。
なぜフレームが変更されたのですか?幅は UISearchDisplayController によって 320-44 から 320 に変更されますか?
ありがとう。