Я получаю странное, случайное, непоследовательное поведение от UISearchController, взаимодействующего с UINavigationController в iOS 8. После выбора строки поиска иногда iOS показывает вид справа, а иногда и один слева:Несогласованное взаимодействие между UISearchController и UINavigationController в iOS 8
Вы можете увидеть его better illustrated in motion on 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 кажется случайным переключаться между отображением панели инструментов или покрытие его с помощью клавиатуры? Дайте мне знать, если вам нужен еще какой-нибудь код, но я разместил все необходимые части.
Спасибо!
Кроме того, FWIW, это на iOS 8.1, и я вижу те же результаты на iPad и iPhone, как и в симуляторе. – Nick
Это хорошее наблюдение. Я не использую 'UIKeyboardWillHideNotification' или' UIKeyboardWillShowNotification' где-нибудь в моем коде. Должен ли я использовать их здесь? – Nick