Skip to content

meiwin/NgKeyboardTracker

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

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

NgKeyboardTracker

Objective-c library for tracking keyboard in iOS apps.

Adding to your project

If you are using CocoaPods, add to your Podfile:

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.

The custom view:

  1. Create NgPseudoInputAccessoryViewCoordinator by calling -createPseudoInputAccessoryViewCoordinator.
  2. Overrides -canBecomeFirstResponder, returns YES.
  3. Overrides -inputAccessoryView, returns coordinator's pseudoInputAccessoryView.
  4. Set UIScrollView's keyboard dismiss mode to UIScrollViewKeyboardDismissModeInteractive.
  5. Set desired height of input accessory view with -setPseudoInputAccessoryViewHeight:.
  6. Layout keyboard's bar accordingly using information from NgKeyboardTracker in layoutSubviews.

P.S. See demo application for example.

About

Objective-C library for tracking keyboard in iOS apps.

Resources

License

Stars

Watchers

Forks

Packages

No packages published