按搜索键时如何关闭键盘?我在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)
}
答案 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>";
}
}
}
}
}
?>