在 UISearchBar 中设置文本字段

Posted

技术标签:

【中文标题】在 UISearchBar 中设置文本字段【英文标题】:Set textfield in UISearchBar 【发布时间】:2015-09-11 05:38:11 【问题描述】:

我正在尝试将 SearchController 添加到 UINavigationBar。我试图在 UINavigationController 的后退按钮之后设置 UISearchBar 的 UITextField。我想要后退按钮后的更多空间

当我开始搜索时,它显示为

而我应该能够查看后退按钮。仅应减小文本字段宽度。同样在 Cancel 之后,它应该再次回到初始布局。而显示如下:

下面是我的代码

var searchResultController = UISearchController()
    
self.searchResultController = (
        
    let controller = UISearchController(searchResultsController: nil)
    controller.searchResultsUpdater = self
    controller.dimsBackgroundDuringPresentation = false
    controller.searchBar.sizeToFit()
    controller.searchBar.delegate = self
        
    controller.hidesNavigationBarDuringPresentation = false
    self.navigationController?.navigationBar.addSubview(controller.searchBar)
        
    return controller
)()

override func viewDidAppear(animated: Bool) 
    for subView in searchResultController.searchBar.subviews
        for subsubView in subView.subviews  
            if let textField = subsubView as? UITextField 
                var bounds: CGRect
                bounds = textField.frame
                bounds.size.width = self.view.bounds.width - 50    
            
        

    

请告诉我如何解决这个问题。

提前致谢

【问题讨论】:

【参考方案1】:

为了设置 UIsearchBar 把它添加到 Navigation 的 titleView 中

self.navigationItem.titleView = controller.searchBar

为了移除取消按钮,我们可以使用 UISearchControllerDelegate 方法

func didPresentSearchController(searchController: UISearchController) 
    searchController.searchBar.showsCancelButton = false

希望这可以帮助任何人。

【讨论】:

以上是关于在 UISearchBar 中设置文本字段的主要内容,如果未能解决你的问题,请参考以下文章

在 UISearchDisplayController 中设置 UISearchBar 的边框颜色

在情节提要中设置时,UISearchBar 不显示范围栏

在UIWebView中设置文本字段的文本

在文本输入字段中设置示例答案

在 redux 形式的文本字段中设置初始值

在 ajax 请求收据中设置文本字段