Как добавить еще одно текстовое поле в UISearchController, когда фокус находится на панели поиска?

Я пытаюсь добавить еще одно текстовое поле для ввода «Местоположение» в UISearchController, когда пользователь фокусируется на панели поиска, чуть ниже панели поиска на панели навигации.

Пример того, что у меня есть и куда я хотел бы пойти:

введите здесь описание изображения

Я пробовал что-то вроде этого, что не работает:

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)
}

Любая помощь будет здорово! Спасибо.


person Ryan    schedule 17.07.2015    source источник
comment
Можете ли вы добавить больше кода. Я хочу знать, как ты с этим справляешься.   -  person Long Pham    schedule 30.07.2015


Ответы (2)


Не знаю, нашли ли вы свой ответ или нет. Позвольте мне предложить свое решение.

В вашем коде нет ничего плохого. Это работает нормально. Но причина, по которой он не отображается, заключается в том, что когда вы щелкаете в строке поиска, func searchBarTextDidBeginEditing(searchBar: UISearchBar) не влияет на него, потому что вы можете забыть установить делегата для панели поиска.

Я попробовал ваш код, и после установки делегата он отлично работает. Также он прячется за панелью навигации, поскольку позиция Y равна 0. Решение:

  1. Добавьте UISearchBarDelegate в свой класс
  2. In viewDidLoad()

      override func viewDidLoad(){
        super.viewDidLoad()
        searchcontroller.searchbar.delegate = self
        }
    
  3. In 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)
    }
    

Надеюсь, поможет.

person Boopathy    schedule 31.07.2015

Попробуйте так:

вы просто создаете пользовательскую панель навигации, добавляете к ней свое текстовое поле и переопределяете методы делегата SearchController

попробуй может сработает.

person Ramkumar chintala    schedule 27.07.2015