关闭键盘拖动

时间:2016-11-11 12:39:04

标签: ios iphone swift search keyboard

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

我尝试通过main.storyboard进行操作,但它没有帮助。

如果我搜索并获得许多结果,我想向下滚动,然后键盘将dismiss并让我更好地看到我的结果。如果有人能提供帮助那就太棒了,谢谢![/ p>

现在,当我在图片中看到我的结果时,当我向下滚动键盘时,键盘会停留,这会令人讨厌。

我正在使用Swift 2.3和Xcode 8.1

enter image description here

这是我的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已解决it.Works,但问题很小

最后一个结果的Cell被削减了一半! :

enter image description here

6 个答案:

答案 0 :(得分:3)

实施scroll view delegate方法(scrollViewWillBeginDragging)。在此方法中resignFirstResponder您的搜索栏。您还可以查看this SO答案。

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

答案 1 :(得分:2)

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

夫特

tableViewCategories.keyboardDismissMode = UIScrollViewKeyboardDismissMode.onDrag

目标C

tableViewCategories.keyboardDismissMode =  UIScrollViewKeyboardDismissModeOnDrag

答案 2 :(得分:2)

触摸或拖动时轻松关闭键盘

答案 3 :(得分:1)

tableView.keyboardDismissMode = .onDrag

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

您添加此UIScrollViewDelegate

// MARK: - UIScrollViewDelegate

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