我想在searchController
搜索结果后,在滑动/拖动时关闭键盘。
我尝试通过main.storyboard
进行操作,但它没有帮助。
如果我搜索并获得许多结果,我想向下滚动,然后键盘将dismiss
并让我更好地看到我的结果。如果有人能提供帮助那就太棒了,谢谢![/ p>
现在,当我在图片中看到我的结果时,当我向下滚动键盘时,键盘会停留,这会令人讨厌。
我正在使用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 //////
}
最后一个结果的Cell被削减了一半! :
答案 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)
}
}