10

Próbuję dodać kolejne pole tekstowe do wejścia "Lokalizacja" do kontrolera UISearch, gdy użytkownik ustawi ostrość na pasku wyszukiwania, tuż pod paskiem wyszukiwania na pasku nawigacji.Jak dodać kolejne pole tekstowe do kontrolera UISearch, gdy fokus znajduje się na pasku wyszukiwania?

Przykład tego, co mam i gdzie chciałabym go, aby przejść:

enter image description here

Próbowałem coś takiego, co nie działa:

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

Any pomoc byłaby świetna! Dzięki.

+0

Czy możesz dodać więcej kodu. Chcę wiedzieć, jak sobie z tym radzisz. –

Odpowiedz

1

Spróbuj tak:

wystarczy utworzyć niestandardowy NavigationBar dodać pole tekstowe do tego, i zastąpić SearchController Delegowanie Metody

spróbować może dzieła.

4

Nie wiem, czy znalazłeś odpowiedź, czy nie. Pozwól mi zaproponować moje rozwiązanie.

Nic nie jest nie tak w twoim kodzie. To działa dobrze. Ale powodem, dla którego się nie wyświetla, jest to, że po kliknięciu w pasek wyszukiwania func searchBarTextDidBeginEditing(searchBar: UISearchBar) nie ma na nie wpływu, ponieważ możesz zapomnieć ustawić delegata dla paska wyszukiwania.

Próbowałem twój kod i po ustawieniu delegata po prostu działa dobrze. Także to chowa się za pasku nawigacyjnym jako pozycja Y jest 0. Rozwiązanie to,

  1. Dodaj UISearchBarDelegate do klasy
  2. W viewDidLoad()

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

Mam nadzieję, że to pomaga.

Powiązane problemy