iOS 8 の UINavigationController と対話する UISearchController から、奇妙でランダムな一貫性のない動作が発生しています。
YouTube で動きのあるイラストを見ることができます。
どのバージョンを入手してもかまいませんが、その一貫性のなさが私を夢中にさせています。
viewDidLoad
検索バーとツールバーの両方を設定するコードは次のとおりです。
- (void)viewDidLoad {
[super viewDidLoad];
// Create our 4 view-filter buttons & a flex space
self.mainButton = [[UIBarButtonItem alloc] initWithTitle:@"Main" style:UIBarButtonItemStylePlain target:self action:@selector(viewMain)];
self.viewedButton = [[UIBarButtonItem alloc] initWithTitle:@"Viewed" style:UIBarButtonItemStylePlain target:self action:@selector(viewViewed)];
self.favoritesButton = [[UIBarButtonItem alloc] initWithTitle:@"Favorites" style:UIBarButtonItemStylePlain target:self action:@selector(viewFavorites)];
self.allButton = [[UIBarButtonItem alloc] initWithTitle:@"All" style:UIBarButtonItemStylePlain target:self action:@selector(viewAll)];
UIBarButtonItem *flexSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
// Add toolbar buttons
NSArray *rightSideButtons = @[self.mainButton, flexSpace, self.favoritesButton, flexSpace, self.viewedButton, flexSpace, self.allButton];
[self setToolbarItems:rightSideButtons];
[self.navigationController setToolbarHidden:FALSE animated:FALSE];
// Set up search bar
self.searchResultsController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
self.searchResultsController.tableView.dataSource = self;
self.searchResultsController.tableView.delegate = self;
self.searchController = [[UISearchController alloc] initWithSearchResultsController:self.searchResultsController];
self.searchController.searchResultsUpdater = self;
self.searchController.searchBar.frame = CGRectMake(self.searchController.searchBar.frame.origin.x,
self.searchController.searchBar.frame.origin.y,
self.searchController.searchBar.frame.size.width, 44.0);
self.tableView.tableHeaderView = self.searchController.searchBar;
// this tells the search controller where to display
self.definesPresentationContext = YES;
}
iOS がツールバーを表示するかキーボードで隠すかをランダムに切り替えるように見える理由は何ですか? さらにコードが必要な場合はお知らせください。ただし、関連すると思われるすべての部分を投稿しました。
ありがとう!