Never implement NSNotification.Name.UIKeyboardDidShow ever again. Ever.
Yeah, seriously. Handling the keyboard on iOS shouldn't be painful. But it is.
So instead of doing a whole lot of calculations, or embedding everything in UIScrollViews, import Keyboard and get on with your life.
- iOS 9+
- Swift 4.2+
Make your view controller conform to the KeyboardChangeHandler protocol:
import Keyboard
classViewController:UIViewController,KeyboardChangeHandler{Start handling keyboard notifications:
overridefunc viewWillAppear(_ animated:Bool){
super.viewWillAppear(animated)becomeKeyboardChangeHandler()}overridefunc viewWillDisappear(_ animated:Bool){resignKeyboardChangeHandler()
super.viewWillDisappear(animated)}ctrl + drag to your favorite NSLayoutConstraint:
Get on with your life
Keyboard comes with a couple of niceties you might enjoy:
- The
Keyboardsingleton:
Keyboard.default.isVisible //tells you if the keyboard is currently visible
Keyboard.default.currentFrame //tells you the keyboard's frame- Turning keyboard handling off:
classViewController:UIViewController{overridefunc awakeFromNib(){
super.awakeFromNib()
//do this if you have set up a bunch of outlets on Interface Builder
//but don't want Keyboard to work on this view controller for now
handlesKeyboard =false}}- Keyboard margin:
overridefunc viewDidLoad(){
super.viewDidLoad()[...]
//adds a margin between the keyboard and the currently active text input
//defaults to 40.0
keyboardMargin =60.0}- Finding the currently active text input:
self.view.currentFirstResponder
UIResponder.currentFirstResponderIf the Simulator doesn't show the keyboard straight away, press
cmd+K.You may get the following messages on the console (which don't affect the library in any way):
_BSMachError: (os/kern) invalid capability (20)
_BSMachError: (os/kern) invalid name (15)
- From v0.6.0: Check this out if you're migrating from version 0.6.0.
pod'Keyboard','~> 1.1'Then import Keyboard where needed.
github "BellAppLab/Keyboard"~>1.1Then import Keyboard where needed.
dependencies:[.package(url:"https://github.com/BellAppLab/Keyboard", from:"1.1")]Then import Keyboard where needed.
cd toYourProjectsFolder
git submodule add -b submodule --name Keyboard https://github.com/BellAppLab/Keyboard.gitThen drag the Keyboard folder into your Xcode project.
Bell App Lab, apps@bellapplab.com
Logo image by Gregor Cresnar from The Noun Project
Keyboard is available under the MIT license. See the LICENSE file for more info.




