J'utilise un UITableViewController avec un UISearchBar. UITableViewController est intégré dans un UINavigationController. Lorsque la vue de la table est affichée, la barre de recherche est en haut comme prévu (sous la barre de navigation). La barre de navigation affiche un titre et une invite.IOS: UISearchBar couvrant partiellement UINavigationBar avec l'invite
Lorsque je clique sur la barre de recherche, elle est déplacée et masque le titre dans ma barre de navigation. L'invite est toujours visible. Lorsque je n'utilise pas d'invite, la barre de recherche est toujours au-dessous de la barre de navigation comme prévu après que je l'ai cliqué.
J'ai créé un projet très simple pour illustrer mon problème. Le projet a le fichier suivant pour un UITableViewController:
import UIKit
class searchTVC: UITableViewController, UISearchControllerDelegate, UISearchResultsUpdating {
fileprivate let searchController = UISearchController(searchResultsController: nil)
override func viewDidLoad() {
super.viewDidLoad()
title = "Title"
navigationItem.prompt = "prompt"
tableView.backgroundColor = UIColor.gray
// Add search bar
searchController.delegate = self
searchController.searchResultsUpdater = self
searchController.hidesNavigationBarDuringPresentation = false
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.sizeToFit()
tableView.tableHeaderView = searchController.searchBar
// remove separators for empty table
tableView.tableFooterView = UIView()
}
func updateSearchResults(for searchController: UISearchController) {
// ignore
}
}
Dans le story-board il n'y a qu'un UITableViewController vide qui est intégré dans un UINavigationController. Le résultat est indiqué ci-dessous.
Si vous commentez la ligne qui définit l'invite le comportement est comme prévu.
Je récemment mis à jour mon code à Swift 4. Je ne me rappelle pas que j'ai vu ce comportement lors de l'utilisation Swift 3, mais je ne suis pas complètement sûr qu'il a été introduit avec Swift 4.
Est-ce que je manque quelque chose dans la code ou est-ce un bug?