Skip to content

The Easiest Way to Observe Keyboard Notifications in iOS

License

Notifications You must be signed in to change notification settings

DATechnologies/KeyboardSpy

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KeyboardSpy

Version Language: Swift Platform License

Written in Swift 4

KeyboardSpy is a super lightweight and easy to use wrapper that makes observing keyboard notifications in iOS a breeze.

Requirements

  • iOS 8.0+
  • xCode 9.0+

Installation

CocoaPods

To integrate KeyboardSpy into your xCode project using CocoaPods, specify it in your Podfile:

pod 'KeyboardSpy'

Then, run the following command:

$ pod install

Usage

KeyboardSpy uses a protocol based approach to observe keyboard notifications:

public protocol KeyboardSpyAgent {
    var keyboardEventsToSpyOn: [KeyboardSpyEvent] { get }
    func keyboardSpyEventProcessed(event:KeyboardSpyEvent, keyboardInfo: KeyboardSpyInfo)
}

To add a spy, simply:

KeyboardSpy.spy(on: self)

To remove a spy, simply:

KeyboardSpy.unspy(on: self)

There are six different events you can spy on:

public enum KeyboardSpyEvent {
    case willShow
    case didShow
    case willHide
    case didHide
    case willChangeFrame
    case didChangeFrame
}

You will get the following object for each event you spy on:

public class KeyboardSpyInfo: NSObject {
    public private(set) var beginFrame: CGRect!
    public private(set) var endFrame: CGRect!
    public private(set) var animationCurve: UIViewAnimationCurve!
    public private(set) var animationDuration: Double!
    public private(set) var isLocal: Bool!
    public var keyboardHeight: CGFloat
}

Example:

import KeyboardSpy

class KeyboardSpyViewController: UIViewController {
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        KeyboardSpy.spy(on: keyboardSpyView) // This can be placed anywhere
    }
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        KeyboardSpy.unspy(on: keyboardSpyView) // This can be placed anywhere
    }
    
}

extension KeyboardSpyViewController: KeyboardSpyAgent {
    
    internal var keyboardEventsToSpyOn: [KeyboardSpyEvent] {
    	return [.willShow, .willHide]
    }
    
    internal func keyboardSpyEventProcessed(event: KeyboardSpyEvent, keyboardInfo: KeyboardSpyInfo) {
        if event == .willShow {
        	// Do something like moving a view above the keyboard
        } else if event == .willHide {
        	// Do something like moving a view back to its original position
        }   
    }

}

Author

Dalton Hinterscher, [email protected]

License

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

About

The Easiest Way to Observe Keyboard Notifications in iOS

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Swift 93.6%
  • Ruby 6.4%