NgKeyboardTracker
  • March 11, 2024

Objective-c library for tracking keyboard in iOS apps.

Adding to your project


 

pod ‘NgKeyboardTracker’

To manually add to your projects:

  1. Add files in NgKeyboardTracker folder to your project.
  2. Add these frameworks to your project: UIKit.

Features


NgKeyboardTracker encapsulates keyboard tracking for iOS apps. It provides convenience to query keyboard’s properties anywhere in your application.

You can also use NgKeyboardTracker to implement iMessage’s text input behavior on iOS 7 (UIScrollViewKeyboardDismissModeInteractive + persistent inputAccessoryView) using NgPseudoInputAccessoryViewCoordinator.

Usage


Start and stop keyboard tracking

In your application delegate:

– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[NgKeyboardTracker sharedTracker] start]; // start tracking
return YES;
}

– (void)applicationWillTerminate:(UIApplication *)application {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
[[NgKeyboardTracker sharedTracker] stop]; // stop tracking
}

Responding to keyboard updates

  1. Implement NgKeyboardTrackerDelegate protocol.
  2. Register as delegate by calling -addDelegate: method
  3. Make sure to call -removeDelegate: to stop receiving keyboard updates

Keyboard tracker’s properties:

  • appearanceState : current appearance state
  • beginFrame : last known begin frame
  • endFrame: last known frame
  • currentFrame: last known current keyboard’s frame
  • animationDuration: last known animation duration
  • animationCurve: last known animation curve
  • animationOptions : derived from animationCurve for convenience

P.S. keyboard’s frame.size.height system’s keyboard height plus inputAccessoryView height.

Pseudo input accessory view coordinator

NgPseudoInputAccessoryViewCoordinator is NgKeyboardTracker extension that makes it easier to implement iMessage’s text input behavior in iOS 7 with UIScrollViewKeyboardDismissModeInteractive and persistent inputAccessoryView.

The view controller:

  1. Override loadView to set custom UIView implementation.
  2. Make sure to call the custom view’s becomeFirstResponder.

GitHub


View Github

#keyboard #menu #text
YOU MIGHT ALSO LIKE...
🧭 NavigationKit

NavigationKit is a lightweight library which makes SwiftUI navigation super easy to use. 💻 Installation 📦 Swift Package Manager Using Swift Package Manager, add ...

swiftui-navigation-stack

An alternative SwiftUI NavigationView implementing classic stack-based navigation giving also some more control on animations and programmatic navigation. NavigationStack Installation ...

Stinsen

Simple, powerful and elegant implementation of the Coordinator pattern in SwiftUI. Stinsen is written using 100% SwiftUI which makes it ...

SwiftUI Router

With SwiftUI Router you can power your SwiftUI app with path-based routing. By utilizing a path-based system, navigation in your app becomes ...

FlowStacks

This package takes SwiftUI's familiar and powerful NavigationStack API and gives it superpowers, allowing you to use the same API not just ...