繁体   English   中英

拖动时关闭键盘

[英]Dismiss Keyboard On drag

searchController搜索结果后,我searchController在滑动/拖动时关闭键盘。

我尝试通过main.storyboard但没有帮助。

如果我搜索并得到很多结果,我想向下滚动,然后键盘将dismiss并让我更好地查看结果。如果有人可以提供帮助,那就太好了,谢谢!

现在,当我得到如图所示的结果时,键盘会在我向下滚动时保持不动,这有点烦人。

我正在使用 Swift 2.3 和 Xcode 8.1

在此处输入图片说明

这是我的 searchController 设置以防万一:

// MARK : Search ! //

    var searchController : UISearchController!

    var resultsController = UITableViewController()

    override func viewDidLoad() {
        super.viewDidLoad()

        definesPresentationContext = true
        self.resultsController.tableView.dataSource = self
        self.resultsController.tableView.delegate = self
        self.searchController = UISearchController(searchResultsController: self.resultsController)
        self.tableView.tableHeaderView = self.searchController.searchBar
        self.searchController.searchResultsUpdater = self
        self.searchController.dimsBackgroundDuringPresentation = true
        self.searchController.searchBar.sizeToFit()
        self.searchController.searchBar.barTintColor = UIColor.blackColor()
        self.searchController.searchBar.endEditing(true)
        self.searchController.searchBar.placeholder = "חפש ברים"
        self.searchController.hidesNavigationBarDuringPresentation = false
        ////// MARK: END Of Search //////
}

编辑:pkc456 已经解决了它。有效,但有一个小问题

最后一个结果的 Cell 被切成两半!

在此处输入图片说明

触摸或拖动时关闭键盘的简单方法(适用于 TableView、CollectionView、ScrollView)

当您使用 tableview 时,您可以使用此属性在拖动时关闭键盘。

斯威夫特

tableView.keyboardDismissMode = UIScrollViewKeyboardDismissMode.onDrag

目标 C

tableView.keyboardDismissMode =  UIScrollViewKeyboardDismissModeOnDrag

实现滚动视图委托方法 ( scrollViewWillBeginDragging )。 在此方法中resignFirstResponder您的搜索栏。 你也可以看看这个SO 答案。

func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
        searchController.searchBar.resignFirstResponder()//self.searchBar?.endEditing(true)
    }

tableView.keyboardDismissMode = .onDrag

  • 使用点击手势关闭键盘。 试试下面给出的解决方案:

     override func viewDidLoad() { super.viewDidLoad() let tapGesture = UITapGestureRecognizer(target: self, action: Selector("hideKeyboard")) tapGesture.cancelsTouchesInView = true tableView.addGestureRecognizer(tapGesture) } func hideKeyboard() { tableView.endEditing(true) }

你添加这个 UIScrollViewDelegate

// MARK: - UIScrollViewDelegate

  func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
        if(velocity.y < 0){
//Scroll down 
            self.view.endEditing(true)
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM