Create custom keyboard with SwiftUI

KeyboardKitSwiftUI

KeyboardKitSwiftUI extends KeyboardKit with SwiftUI functionality.

It's temporarily a separate framework, since Xcode can't handle iOS 13 features in a framework that targets iOS 11.

When this is fixed or this project stops supporting iOS 11 and 12, this library will be added to KeyboardKit.

SwiftUI Support

KeyboardKitSwiftUI has helps you build KeyboardKit-based keyboard extensions in SwiftUI.

To setup a keyboard extension to use KeyboardKitSwiftUI, and set up your input view controller with setup<Content: View>(with view: Content). It takes a custom SwiftUI View and will use this view to resize the extension. This will also setup the keyboard with an ObservableKeyboardContext and a standard keyboard style.

You can then add any views you want to the keyboard view and use the rich set of extensions and utilities that this library provides.

  • Context contains an observable context and SwiftUI-specific context extensions.
  • Extensions contains SwiftUI-specific extensions.
  • Gestures contains SwiftUI-specific keyboard gestures.
  • Settings contains SwiftUI-specific settings extensions.
  • System contains views and extensions that helps you create system keyboard mimicking keyboards..
  • Toast contains SwiftUI-specific components to show a toast on top of a keyboard extension.
  • Views contains SwiftUI-specific keyboard views.

You can read about some of this in the main project's readme collection.

How to create keyboards with SwiftUI

There is no magic to using this library with SwiftUI. You can use any views you like, and just let them trigger actions when they are tapped, pressed etc.

However, this repo has a bunch of views and utilities to help you simplify this. This is stil very much a work in progress, but my goal is to have great SwiftUI support in KeyboardKit 4.0. So far, the support is pretty basic.

Basically, you can create keyboards in a wide variety of ways:

  • Use any views and manually call the action handler when they are tapped, pressed etc.
  • Use any views and use View+KeyboardGestures to trigger any functions when they are tapped, pressed etc.
  • Use any views and use View+KeyboardAction to apply a certain keyboard action to the view.
  • Use any views and use View+System to apply various system look and feel to them, e.g. systemKeyboardButtonStyle.
  • Use SystemKeyboardButton to create buttons that try to mimic the native look and feel for the provided keyboard action.
  • Use any of the many views in the Views namespace to create more complex keyboards.

Note that the System namespace is intended to build keyboards that resemble system keyboards. They currently provide little customizations.

Demo application

There is a SwiftUI-specific demo keyboard in the main KeyboardKit repository.

To try it out, run the demo project, enabe the SwiftUI keyboard in settings and you're good to go.

Installation

Swift Package Manager

https://github.com/danielsaidi/KeyboardKitSwiftUI.git

CocoaPods

target 'MyApp' do
  pod 'KeyboardKit'
end

target 'MyKeyboard' do
  pod 'KeyboardKit'
end

GitHub