user7804097
user7804097

Reputation: 308

Keyboard not being dismissed

I realize this is a trivial question with tons of answer on SO. I may just need a pair of fresh eyes as I've triple checked everything and cannot see where I am going wrong with this. I just want to dismiss the keyboard on hitting the return key. I'm setting the delegate properly and implementing the proper methods, so why won't the keyboard dismiss?

Does having a collectionView in the viewController complicate things? (text field is NOT inside collectionView)

class SearchController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UITextFieldDelegate {

@IBOutlet weak var searchBar: UITextField!


override func viewDidLoad() {
    super.viewDidLoad()

    searchBar.delegate = self
    setupUI()

}

func textFieldShouldReturn(textField: UITextField) -> Bool {
    searchBar.resignFirstResponder()
    return true
}

Things I've tried:

What the heck am i missing here!?

Upvotes: 0

Views: 73

Answers (2)

rmaddy
rmaddy

Reputation: 318774

You need to implement the proper text field delegate method. There is no such delegate method as textFieldShouldReturn(textField:). The proper method is textFieldShouldReturn(_:).

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    searchBar.resignFirstResponder()
    return false
}

The _ makes a huge difference. You may have copied an old Swift 2 implementation.

It's best to let Xcode perform code completion to ensure you get the correct signature of any method you are implementing or calling.

Upvotes: 2

Manish Mahajan
Manish Mahajan

Reputation: 2082

Use this code

view.endEditing(true) 

Upvotes: -1

Related Questions