Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 

README.md

KeyboardHelper

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.

You can’t perform that action at this time.