当焦点在Search Bar上时,如何将另一个文本字段添加到UISearchController?

时间:2015-07-17 04:53:49

标签: swift uitextfield uisearchdisplaycontroller uisearchcontroller

我正在尝试为“位置”添加另一个文本字段。当用户专注于搜索栏时,在导航栏上的搜索栏下方输入到UISearchController。

我所拥有的以及我希望去的地方的例子:

enter image description here

我尝试过这样的事情,这是行不通的:

var searchController: UISearchController!

func searchBarTextDidBeginEditing(searchBar: UISearchBar) {
    var myTextField: UITextField = UITextField(frame: CGRect(x: 0, y: 0, width: 200.00, height: 40.00))
    myTextField.backgroundColor = UIColor.purpleColor()
    myTextField.text = "Location"
    myTextField.borderStyle = UITextBorderStyle.None
    searchController.view.addSubview(myTextField)
}

任何帮助都会很棒!感谢。

2 个答案:

答案 0 :(得分:4)

不知道你是否找到了答案。让我建议我的解决方案。

您的代码没有错。它工作正常。但是,它没有显示的原因是,当您在搜索栏中单击func searchBarTextDidBeginEditing(searchBar: UISearchBar)对它没有影响,因为您可能忘记设置搜索栏的委托。

我尝试了你的代码,在设置委托后,它运行正常。当Y位置为0时,它也隐藏在导航栏后面。解决方案是,

  1. UISearchBarDelegate添加到您的班级
  2. viewDidLoad()

      override func viewDidLoad(){
        super.viewDidLoad()
        searchcontroller.searchbar.delegate = self
        }
    
  3. searchBarTextDidBeginEditing

       func searchBarTextDidBeginEditing(searchBar: UISearchBar) {           
    
        var myTextField: UITextField = UITextField(frame: CGRect(x: 0, y: searchController.searchBar.frame.height + 20, width: view.frame.size.width, height: 40.00))
        myTextField.backgroundColor = UIColor.purpleColor()
        myTextField.text = "Location"
        myTextField.borderStyle = UITextBorderStyle.None
        searchController.view.addSubview(myTextField)
    }
    
  4. 希望它有所帮助。

答案 1 :(得分:1)

  

试试这样:

     

您只需创建一个自定义NavigationBar,将文本字段添加到该文本字段并覆盖SearchController委托方法

尝试它可能有效。