CocoaPods trunk is moving to be read-only. Read more on the blog, there are 19 months to go.

KeyboardSpy 1.1

KeyboardSpy 1.1

TestsTested
LangLanguage SwiftSwift
License MIT
ReleasedLast Release Sep 2017
SwiftSwift Version 3.0
SPMSupports SPM

Maintained by Dalton Hinterscher.



  • By
  • Daltron

KeyboardSpy




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+

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.