2016-11-11 3 views
1

Я хотел бы убрать клавиатуру при прокрутке/перетаскивании после того, как я нахожу результаты в своем searchController.Dismiss Keyboard On drag

Я пробовал делать это через main.storyboard, но это не помогло.

Если я ищу и получаю много результатов, я бы хотел прокрутить вниз, а затем клавиатура будет dismiss и позвольте мне увидеть мои результаты лучше. Если кто-нибудь может помочь, это будет здорово, спасибо заранее!

Прямо сейчас, Когда у меня есть результаты, как видно на картинке, клавиатура остается, когда я прокручиваю вниз и ее раздражает.

Я использую 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 ////// 
} 

Edit: pkc456 Решила it.Works, но имеет маленький вопрос

Последняя ячейка результата разрезается пополам! :

enter image description here

ответ

1

Реализация scroll view delegate метод (scrollViewWillBeginDragging). В этом методе resignFirstResponder ваша панель поиска. Вы также можете посмотреть на this Ответ.

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

Вы можете помочь мне может быть, с физическим кодом? жаль, что я только начал кодировать и понятия не имею, что делать когда-нибудь, что делать xD –

+0

Я добавляю код. – pkc456

+0

Я использую tableViewController, поэтому делегат в строке класса избыточен правильно? –

2

Как вы используете tableview, вы можете убрать клавиатуру при перетаскивании с использованием этого свойства.

Swift

tableViewCategories.keyboardDismissMode = UIScrollViewKeyboardDismissMode.onDrag 

Objective C

tableViewCategories.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag 
+0

не работает ... поскольку, как уже пробовал применить это к 'tableView' в' main.storyboard', нужно применить его к UISearchController? –

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) 
    } 
    
+0

Не работает для меня ... –

0

добавить этот UIScrollViewDelegate

// MARK: - UIScrollViewDelegate

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

Не работает для меня :( –

+0

Вы используете swift 3.0 или swift 2? –

+0

Swift 2.3 и Xcode 8.1 –

0

tableView.keyboardDismissMode = .onDrag

Смежные вопросы