1

Mon contrôleur de vue racine est un UISplitViewController avec preferredDisplayMode est UISplitViewControllerDisplayModeAllVisible. Dans le détail contrôleur de vue, j'ai un UISearchController, mais je n'ai pas UITableView pour fixer la barre de recherche, donc je placé un UIView dans la vue et ajouter une barre de recherche dans ce:Barre de recherche UISearchController égarée lorsque le mode UISplitViewController est visible

_searchController = [[UISearchController alloc] initWithSearchResultsController:nil]; 
_searchController.hidesNavigationBarDuringPresentation = NO; 

// This is the view to contain search bar 
_searchView.backgroundColor = [UIColor greenColor]; 
[_searchView addSubview:_searchController.searchBar]; 

self.navigationItem.leftBarButtonItem = self.splitViewController.displayModeButtonItem; 

MISE À JOUR: Cela s'est également produit avec UISearchBar mis à tableView.tableHeaderView, non seulement lorsqu'il est contenu dans un UIView.

C'est ce qu'il ressemble au premier abord (je cropped la hauteur de l'image):

enter image description here

Mais lorsque le contrôleur de recherche est actif, origin.x de cadre de barre de recherche est déplacée vers la droite, est exactement égale à la largeur du contrôleur de vue maître:

enter image description here

Lorsque le contrôleur de vue est divisé en mode UISplitViewControllerDisplayModePrimaryHidden, cela ne se produira pas, barre de recherche est affiché tout à fait normal:

enter image description here

Alors est-ce un bug de UISplitViewController? Actuellement je fixe que cette façon laide, remise à zéro origin.x de la barre de recherche, il est un peu glitch:

- (void)didPresentSearchController:(UISearchController *)searchController { 
    searchController.searchBar.superview.clipsToBounds = NO; 

    if (self.splitViewController.displayMode == UISplitViewControllerDisplayModeAllVisible) { 
     searchController.searchBar.frame = ({ 
      CGRect frame = searchController.searchBar.frame; 
      frame.origin.x -= self.splitViewController.primaryColumnWidth; 
      frame; 
     }); 
    } 
} 
+0

Comment vous avez trouvé une autre solution? J'ai le même bug sur iOS 10.3 – CryingHippo

Répondre

1

Cela me donnait des tonnes de problèmes. Mon application a fonctionné sur tout mais iPads en raison de la barre de recherche étant mal placée dans le SplitView. J'ai finalement rencontré quelqu'un qui a posté la solution. Ajoutez ceci à la fin de viewDidLoad() pour votre point de vue de la table:

self.definesPresentationContext = true 

source: searchBar from UISearchController not showing correctly on split view on iPad