A small, drop-in Swift UIKit keyboard manager for iOS apps that handles keyboard presence and behavior without notification center.
Typist is a small Swift library that manages keyboard events in iOS apps. It provides a declarative API to handle keyboard appearance, disappearance, and frame changes without using NotificationCenter or Objective-C. It simplifies keyboard interaction management, especially for views with scrollable content and interactive dismissal.
iOS developers building UIKit-based applications who need to manage keyboard interactions, particularly those working with forms, text inputs, or scrollable interfaces.
Developers choose Typist for its clean Swift-native API, elimination of NotificationCenter boilerplate, and support for interactive keyboard dismissal. It’s lightweight, easy to integrate, and reduces the complexity of keyboard event handling.
Swift UIKit keyboard manager for iOS apps.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a chainable API to define actions for keyboard events like .didShow and .didHide, simplifying code compared to verbose NotificationCenter observers as shown in the usage example.
Supports interactive keyboard dismissal with UIScrollView via the toolbar(scrollView:) method, enhancing user experience for scrollable interfaces as demonstrated in the README.
Each callback includes a KeyboardOptions struct with detailed metrics such as frames, animation curves, and durations, eliminating the need to parse raw notification data manually.
Built purely in Swift without Objective-C interoperability or NotificationCenter, reducing boilerplate and aligning with modern iOS development practices as emphasized in the description.
The README explicitly warns that using Typist.shared with multiple on-screen controllers can cause event handling failures, limiting scalability in complex app architectures.
For interactive dismissal, developers must animate inputAccessoryView themselves based on frame changes, adding complexity as noted in the example where willChangeFrame requires custom animation.
Only supports six predefined keyboard events; advanced scenarios needing additional system events or custom keyboard interactions are not supported, restricting flexibility.
Designed exclusively for UIKit, making it unsuitable for SwiftUI projects without bridging work, which can be a barrier for teams adopting Apple's newer UI frameworks.