0

iOS 8 の UINavigationController と対話する UISearchController から、奇妙でランダムな一貫性のない動作が発生しています。

2 つの異なるビュー

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 がツールバーを表示するかキーボードで隠すかをランダムに切り替えるように見える理由は何ですか? さらにコードが必要な場合はお知らせください。ただし、関連すると思われるすべての部分を投稿しました。

ありがとう!

4

1 に答える 1

0

私は2つのことを変更することでこれを修正しました:

まず、ステートメント[self.navigationController setToolbarHidden:FALSE animated:FALSE];から行を削除しました(質問に見られるように)。viewDidLoad

次に、Storboard で、影響を受ける Table View を含む Navigation ControllerのShows Toolbarを有効にしました。

指標

これにより、Xcode が UI を焼き付ける方法が変わったと思います。これまでのところ、検索を呼び出すときにキーボードによってツールバーが押し上げられるのを見たことがありません。

少なくとも、私はそれが違いを生んだことを願っています… そうでなければ、それはおそらくブードゥー教です. :-)

于 2014-11-09T20:53:59.323 に答える