I'm working on a 3rd party keyboard for iOS8 and I want it to look and feel as close as possible to Apple's keyboard. Unfortunately, it's not possible to access the keyboard view through code, so this is my attempt to imitate it by hand. (I'm sure there are ways to get even more accuracy via reverse engineering, but that's too much work for me!) In the end, I hope to produce a coherent and robust baseline for creating custom 3rd party keybards — at least, until Apple decides to fully open up their keyboard API.
- No bitmaps! Everything is rendered using CoreGraphics.
- Dynamic layouts! All the keys are laid out programmatically, meaning that the keyboard is much easier to extend and will automatically work on devices of all sizes.
- This keyboard is an iOS8 extension.
The development of this keyboard is out in the open, so the project may not work at all times. At the present moment, the baseline functionality is there. Left to implement are special characters, Shift, multitouch, and improved graphics (including translucenty and dark mode).
Hold-to-select-alternate-characters will be implemented at a later time.
- Edit Scheme for the Keyboard target and set the Executable to be HostingApp.app.
- Run the Keyboard target.
- Go to
Settings→General→Keyboard→Keyboards→Add New Keyboard
on your device and add the third-party keyboard. - Go back to the app. You should be able to select the keyboard via the globe icon.
- Swift
- 3rd party extensions
- 3rd party frameworks (for IB use)
- autolayout
- CoreGraphics
- finally release an app on the App Store, darn it
Please consult the project wiki for technical details. You may find it handy if you're implementing your own keyboard!
I made a 3rd party functionless keyboard with a similar layout but a much simpler program structure for debugging purposes. You can find it here: faux-testing-keyboard
This project is licensed under the 3-clause ("New") BSD license. (Go Bears!)