如何在swift 3中的tableView上按搜索键时关闭键盘?

时间:2017-02-21 05:45:46

标签: ios swift uitableview swift3 xcode8.2

按搜索键时如何关闭键盘?我在tableView上有一个搜索栏,我使用了以下方法。它没用。任何想法为什么?提前致谢。

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

    textField.resignFirstResponder()
    return true

}

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

这张照片就是我想要做的,当我点击搜索键时什么也没发生。 enter image description here

我的UISearchBar委托已经设置

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)

}

3 个答案:

答案 0 :(得分:8)

如果您正在使用UISearchBar,请首先确保其委托已设置 然后添加此功能

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

答案 1 :(得分:1)

以下对我有用。

'searchActive'用于在过滤值和原始未过滤值之间切换。

'initialUseOfSearchBar'用于第一次显示键盘,但在用户按下清除'x'后隐藏该键盘。

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

   ...

}

...

答案 2 :(得分:0)

请确保viewDidLoad() self.textField.delegate = self viewController当前UITextFieldDelegate必须符合textFieldShouldReturn()协议。然后,确保正确拼写函数<?php class DB_con { private $servername; private $user; private $password; private $dbname; public $connection; public function __construct() { $this->db_connect(); } public function db_connect() { $this->servername = "localhost:3307"; $this->user = "root"; $this->password = "1234"; $this->dbname = "library"; $this->connection = new mysqli($this->servername,$this->user,$this->password,$this->dbname); if($this->connection->connect_error) { die("connection failed :".$this->connection->connect_error); } else { echo "Success"; } return $this->connection; } public function insert($user,$hide,$phone,$address,$posting,$date,$secu_ques,$secu_ans) { $this->db_connect(); /*if($pass != $rpass) { echo "<script> alert('The Passwords do not match'); </script>"; }*/ $phone = mysqli_query($this->connection,"SELECT Phone from Users WHERE Phone = '$phone'"); $get_phone = mysqli_affected_rows($this->connection); if($get_phone >1) { echo "<script> alert('Number already Exists!!!'); </script>"; } else if($address == null) { echo "<script> alert('Fill out all the Fields to Continue'); </script>"; } else if($posting == 'Designation') { echo "<script> alert('Choose a Designation!!!'); </script>"; } else if ($secu_ques == null || $secu_ans == null) { echo "<script> alert('Enter A Security Question and Answer to Continue'); </script>"; } else { $select_user = "SELECT Username from Users WHERE Username = '$user'"; mysqli_query($this->connection,$select_user); $get_user = mysqli_affected_rows($this->connection); if($get_user >=1) { echo "<script> alert('This Username Already Exists!!!'); </script>"; } else { $record_add = "INSERT INTO Users(Username,Password,Phone,Address,Designation,DOJ,Question,Answer)VALUES('$user','$hide','$phone','$address','$posting','$date','$secu_ques','$secu_ans')"; $res = mysqli_query($this->connection,$record_add); if($res == TRUE) { echo "<script type = 'text/javascript'> alert('Congrats you have Successfully Registered!!!'); </script>"; } else { echo "<script type = 'text/javascript'> alert('Error in Registering!!!'); </script>"; } } } } } ?>