Latest 3.0.0
Homepage https://github.com/nodes-ios/KeyboardHelper
License MIT
Platforms ios 8.0
Authors

No more checking for keyboard notifications and parsing keyboard apperance info manually!

A small (but cool) tool for handling UIKeyboard appearing and disappearing in your view controllers.

CircleCI
Codecov
Documentation
CocoaPods
Carthage Compatible
Swift Package Manager
Plaform
GitHub license
Readme Score

📦 Installation

Carthage

github "nodes-ios/KeyboardHelper" ~> 3.0.0

CocoaPods

pod 'KeyboardHelper', '~> 3.0.0'

Older versions

Last versions compatible with lower Swift versions:

Swift 4: ~> 2.0.0
Swift 3: == 1.2.1
Swift 2.3: == 0.10.0
Swift 2.2: == 0.9.4

🔧 Setup

Implement KeyboardHelperDelegate in your UIViewController.

class ViewController: UIViewController, KeyboardHelperDelegate

Add a KeyboardHelper private variable, initialize it and set the delegate.

private var keyboardHelper : KeyboardHelper?

func viewDidLoad() {
    ...
    self.keyboardHelper = KeyboardHelper(delegate: self)
    ...
}

Implement the two methods in the KeyboardHelperDelegate:

public func keyboardWillAppear(_ info: KeyboardHelper.KeyboardAppearanceInfo)
public func keyboardWillDisappear(_ info: KeyboardHelper.KeyboardAppearanceInfo)

Both methods take as argument a KeyboardAppearanceInfo object, which is basically a wrapper over the userInfo dictionary of the UIKeyboardWillShowNotification and UIKeyboardWillHideNotification notifications.

One example of implementation for the two delegate methods is:

func keyboardWillAppear(_ info: KeyboardAppearanceInfo) {
        UIView.animate(withDuration: TimeInterval(info.animationDuration),
            delay: 0,
            options: info.animationOptions,
            animations: {
                let insets = UIEdgeInsetsMake(0, 0, info.endFrame.size.height, 0)
                self.scrollView.contentInset = insets
                self.scrollView.scrollIndicatorInsets = insets
            },
            completion: nil)
    }

func keyboardWillDisappear(_ info: KeyboardAppearanceInfo) {
    UIView.animate(withDuration: TimeInterval(info.animationDuration),
        delay: 0,
        options: info.animationOptions,
        animations: {
            let insets = UIEdgeInsetsZero
            self.scrollView.contentInset = insets
            self.scrollView.scrollIndicatorInsets = insets
        },
        completion: nil)
}

The KeyboardAppearanceInfo object has the following properties:

  • beginFrame: a CGRect corresponding to the value for UIKeyboardFrameBeginUserInfoKey
  • endFrame: a CGRect corresponding to the value for UIKeyboardFrameEndUserInfoKey
  • belongsToCurrentApp: a Bool corresponding to the value for UIKeyboardIsLocalUserInfoKey
  • animationDuration: a Double corresponding to the value for UIKeyboardAnimationDurationUserInfoKey
  • animationCurve: a UIViewAnimationCurve corresponding to the value for UIKeyboardAnimationCurveUserInfoKey
  • animationOptions: a UIViewAnimationOptions from the value of UIKeyboardAnimationCurveUserInfoKey

KeyboardAppearanceInfo also has the convenience method animateAlong:completion:, which can be used like this:

func keyboardWillAppear(info: KeyboardAppearanceInfo) {
    info.animateAlong({ () -> Void in
            let insets = UIEdgeInsetsMake(0, 0, info.endFrame.size.height, 0)
            self.scrollView.contentInset = insets
            self.scrollView.scrollIndicatorInsets = insets
        })  { finished in }

to get the same effect as the initial keyboardWillAppear: implementation example above.

👥 Credits

Made with ❤️ at Nodes.

📄 License

KeyboardHelper is available under the MIT license. See the LICENSE file for more info.

Latest podspec

{
    "name": "KeyboardHelper",
    "version": "3.0.0",
    "summary": "Handle UIKeyboard with ease, delegation and strongly typed user info included!",
    "description": "A small (but cool) tool for handling UIKeyboard appearing and disappearing in your view controllers.",
    "homepage": "https://github.com/nodes-ios/KeyboardHelper",
    "license": "MIT",
    "authors": {
        "Nodes Agency - iOS": "[email protected]"
    },
    "platforms": {
        "ios": "8.0"
    },
    "swift_version": "5.0",
    "source": {
        "git": "https://github.com/nodes-ios/KeyboardHelper.git",
        "tag": "3.0.0"
    },
    "source_files": "KeyboardHelper/Classes"
}

Pin It on Pinterest

Share This