Как исправить изменение размера панели поиска UISearchController при фокусировке? - PullRequest
2 голосов
/ 27 мая 2020

Я пытаюсь реализовать UISearchController с UITableView внутри небольшого всплывающего экрана, например: Изображение, отображающее всплывающее окно с UITableView и UISearchController .
Однако, когда панель поиска сфокусирована, он перемещается вверх и становится шире, как показано здесь: Изображение, на котором отображается панель поиска с ошибками .
Я нашел еще одно сообщение об этой проблеме здесь , но принятое решение не помогло Кажется, проблема решена.
Для справки, я использую модальный переход, отображающийся на весь экран. Существует представление содержимого, в котором просматриваются tableView и titleLabel. Вот соответствующий код для контроллера всплывающих окон.

@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var titleLabel: UILabel!

var items = ["Test", "oewrghp", "wopqet", "vbsjadsf", "rweoghp", "bmwehth", "pqeojnh"]
var filteredItems = [String]()
let searchController = UISearchController(searchResultsController: nil)

override func viewDidLoad() {
    super.viewDidLoad()

    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissTapGesture(gesture:)))
    view.addGestureRecognizer(tapGesture)
    view.backgroundColor = UIColor(displayP3Red: 0, green: 0, blue: 0, alpha: 0.3)

    searchController.searchResultsUpdater = self
    searchController.hidesNavigationBarDuringPresentation = false
    searchController.searchBar.barTintColor = .white
    searchController.searchBar.backgroundColor = .clear
    searchController.searchBar.delegate = self
    searchController.obscuresBackgroundDuringPresentation = false

    titleLabel.text = "Search"

    tableView.tableHeaderView = searchController.searchBar
    tableView.delegate = self
    tableView.dataSource = self
    tableView.reloadData()
    tableView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.handleTap(_:))))

    // Do any additional setup after loading the view.
}

1 Ответ

0 голосов
/ 27 мая 2020

Используйте UISearchBar вместо UISearchController

Что-то вроде:

let searchBar = UISearchBar(frame: CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 44))

Надеюсь, это кому-то поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...