Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS 8中UISearchController和UINavigationController之间的交互不一致_Ios_Objective C_Uinavigationcontroller_Ios8_Uisearchcontroller - Fatal编程技术网

iOS 8中UISearchController和UINavigationController之间的交互不一致

iOS 8中UISearchController和UINavigationController之间的交互不一致,ios,objective-c,uinavigationcontroller,ios8,uisearchcontroller,Ios,Objective C,Uinavigationcontroller,Ios8,Uisearchcontroller,在iOS 8中,我从UISearchController与UINavigationController交互中得到了奇怪、随机、不一致的行为。选择搜索栏后,有时iOS会在右侧显示视图,有时会在左侧显示视图: 你可以看到 我不在乎我得到的是哪个版本,但让我发疯的是前后矛盾 以下是设置搜索栏和工具栏的viewDidLoad代码: - (void)viewDidLoad { [super viewDidLoad]; // Create our 4 view-filter button

在iOS 8中,我从UISearchController与UINavigationController交互中得到了奇怪、随机、不一致的行为。选择搜索栏后,有时iOS会在右侧显示视图,有时会在左侧显示视图:

你可以看到

我不在乎我得到的是哪个版本,但让我发疯的是前后矛盾

以下是设置搜索栏和工具栏的
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在显示工具栏和用键盘覆盖工具栏之间随机切换吗?如果你需要更多的代码,请告诉我,但是我发布了所有似乎相关的部分


谢谢

我通过改变两件事解决了这个问题:

首先,我删除了行
[self.navigationController setToolbarHidden:FALSE动画:FALSE]来自我的
viewDidLoad
语句(如问题中所示)

其次,在我的Storboard中,我在包含受影响的表视图的导航控制器上启用了显示工具栏:

我认为这改变了Xcode烘焙UI的方式,到目前为止,我还没有看到在调用搜索时由键盘推动的工具栏


至少,我希望这会有所不同……否则可能是巫毒教。:-)

另外,FWIW,这是在iOS 8.1上,我在iPad和iPhone硬件上看到的结果与我在模拟器上看到的结果相同。这是一个很好的观察结果。我没有在代码中的任何地方使用
UIKeyboardWillHideNotification
UIKeyboardWillShowNotification
。我应该在这里用吗?