首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在swift 3中按下tableView上的搜索键时关闭键盘?

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

Stack Overflow用户
提问于 2017-02-21 13:45:46
回答 3查看 5.6K关注 0票数 4

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

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

    textField.resignFirstResponder()
    return true

}

更新2.0 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)

}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-21 13:58:01

如果您使用的是UISearchBar,那么首先确保设置了它的委托,然后添加此函数

func searchBarSearchButtonClicked(_ searchBar: UISearchBar)  {
    searchBar.resignFirstResponder()
}
票数 14
EN

Stack Overflow用户

发布于 2017-07-20 16:25:42

下面的方法对我很有效。

'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

   ...

}

..。

票数 1
EN

Stack Overflow用户

发布于 2017-02-21 13:57:03

确保在viewDidLoad()中使用self.textField.delegate = self,当然,您的viewController必须符合UITextFieldDelegate协议。然后,确保您正确地拼写函数textFieldShouldReturn()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42359591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档