UISearchController 中的搜索图标为截止

Posted

技术标签:

【中文标题】UISearchController 中的搜索图标为截止【英文标题】:Search Icon in UISearchController is Cutoff 【发布时间】:2015-11-20 17:17:30 【问题描述】:

当我将 UISearchController 搜索栏中的占位符文本更新为比搜索栏更宽的内容时,搜索图标会发生这种情况:

我通过在viewDidLoad中调用以下方法添加了UISearchController和搜索栏:

private func initSearchController() 

    searchResultsController = UITableViewController()
    searchResultsController.tableView.backgroundColor = UIColor(red: 51/255, green: 51/255, blue: 51/255, alpha: 1.0)
    searchController = UISearchController(searchResultsController: searchResultsController)
    searchResultsController.tableView.rowHeight = 50

    let textFieldInsideSearchBar = searchController.searchBar.valueForKey("searchField") as? UITextField
    textFieldInsideSearchBar?.textColor = UIColor.whiteColor()
    searchController.searchBar.sizeToFit()
    searchController.searchBar.placeholder = "SOL Southwest Kitchen & Tequila Bar"

    searchController.hidesNavigationBarDuringPresentation = false
    searchController.dimsBackgroundDuringPresentation = true
    searchController.searchBar.searchBarStyle = .Minimal
    navigationItem.titleView = searchController.searchBar
    definesPresentationContext = true

    searchController.searchResultsUpdater = self
    searchResultsController.tableView.dataSource = self
    searchResultsController.tableView.delegate = self
    searchController.searchBar.delegate = self


什么给了?另外,无论如何要消除后退按钮和搜索栏之间的奇怪间隙?如果有帮助,这个视图是导航控制器中的第二个视图控制器。使用 ios9 和 Swift 2.1。谢谢!

【问题讨论】:

不幸的是,移动放大镜为占位符文本腾出空间是 uisearchbar 的标准行为,即使这意味着放大镜被剪裁了。点击搜索栏将使放大镜再次可见。避免这种情况的最简单方法是使用较短的占位符字符串。无论如何,您的字符串将被截断。占位符文本是描述性的(例如搜索、搜索位置、搜索联系人、搜索食物和饮料等) 如果您将搜索栏移到导航栏下方,它看起来会更好,并且符合 Apple 的指南,例如看看邮件应用他们是如何放置搜索栏的。 是的,我决定将其改回适合的默认占位符文本。 【参考方案1】:

这似乎是不可能的,除非使用按钮、图像和文本字段创建自定义搜索栏。

【讨论】:

以上是关于UISearchController 中的搜索图标为截止的主要内容,如果未能解决你的问题,请参考以下文章

在 NavigationBar 中打开 UISearchController 时,整个应用程序冻结

移除 UISearchController 后,NavigationItem 不会恢复到原来的大小

ios UIsearchcontroller 中的搜索栏消失

使用 UISearchController 显示搜索结果和键盘覆盖 UITableView 中的底部行/部分

以编程方式重置 UISearchController 中的搜索查询字符串

iOS中的2中搜索方式UISearchDisplayController和UISearchController