2017-02-21 4 views
0

Wie Sie die Tastatur beim Drücken der Suchtaste verwerfen? Ich habe eine Suchleiste auf TableView und ich habe die folgende Methode verwendet. Es hat nicht funktioniert. Irgendeine Idee warum? Danke im Voraus.Wie Sie die Tastatur beim Drücken der Suchtaste in der tableView in swift 3 verwerfen?

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 

    textField.resignFirstResponder() 
    return true 

} 

UPDATE 2.0 ----------------------------------------- -----------

Dieses Bild ist was ich versuche zu tun, als ich auf die Such-Taste nichts passierte. enter image description here

Ich habe meine UISearchBar Delegierten bereits

class SearchVC: UIViewController, UITableViewDataSource, UISearchBarDelegate { 


@IBOutlet weak var tableView: UITableView! 

@IBOutlet weak var searchBar: UISearchBar! 

var data = [// my data here.] 

var filteredData: [String]! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    tableView.dataSource = self 
    searchBar.delegate = self 
    filteredData = data 


    let tap = UITapGestureRecognizer(target: self, action: #selector(handleTap)) 
    tableView.addGestureRecognizer(tap) 

} 
+0

können Sie https://github.com/hackiftekhar/IQKeyboardManager verwenden, wenn bequem. –

+0

können Sie prüfen, haben Sie den TextField Delegate gesetzt? – Ram

+0

'textFiledShouldReturn' sollte' textFieldShouldReturn' ... sein "Feld" in Methodenname –

Antwort

4

Wenn Sie UISearchBar verwenden, dann zuerst seine Delegierten stellen Sie sicher, gesetzt und fügen Sie dann diese Funktion

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    searchBar.resignFirstResponder() 

    } 
+0

HI, ich habe diese Funktion schon. Was ich versuche zu tun ist, wenn ich auf Suchleiste Tastatur erscheint und wenn ich auf Suchschlüssel klicke, die Tastatur ablehnen. Ich bin mir nicht sicher, wie ich den zweiten Teil machen soll. – QQ10

+0

können Sie prüfen, ob Sie UIsearchBar delegieren – Ram

+0

Ich habe nicht func searchBarSearchButtonClicked (searchBar: UISearchBar) {} -Funktion. Was soll ich in dieser Funktion tun? – QQ10

0

sicher gesetzt haben, machen in viewDidLoad() Sie tun self.textField.delegate = self und natürlich auch Ihre viewController muss das UITextFieldDelegate Protokoll entsprechen. Dann stellen Sie sicher, dass Sie die Funktion richtig zu buchstabieren textFieldShouldReturn()

1

Die für mich gearbeitet folgen.

'searchActive' wird verwendet, um zwischen den gefilterten Werten und den ursprünglichen ungefilterten Werten zu wechseln.

'initialUseOfSearchBar' wird verwendet, um die Tastatur beim ersten Mal anzuzeigen, aber danach ist die Tastatur ausgeblendet, wenn der Benutzer 'x' drückt.

var initialUseOfSearchBar = true 

func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) { 
    searchActive = true 

    if searchBar.text?.characters.count == 0 { 
     searchActive = false 

     if initialUseOfSearchBar == false { 
      searchBar.resignFirstResponder() 
     } 
    } 
} 

func searchBarTextDidEndEditing(_ searchBar: UISearchBar) { 
    searchActive = false 
} 

func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 
    searchActive = false 
} 

func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 
    searchActive = false 
} 

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 

    if searchText.characters.count == 0 { 
     searchActive = false; 
     tableView.reloadData() 
     searchBar.resignFirstResponder() 
    } 

    initialUseOfSearchBar = false 

    ... 

} 

...

Verwandte Themen