Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

How to Create Custom Keyboards in iOS

DZone's Guide to

How to Create Custom Keyboards in iOS

· Mobile Zone
Free Resource

Download this comprehensive Mobile Testing Reference Guide to help prioritize which mobile devices and OSs to test against, brought to you in partnership with Sauce Labs.

For our Underutilized iOS Feature Of The Week award, how about UITextField/UITextView’s inputView field? Probably pretty much totally overlooked it, haven’t you? Here’s a sample implementation for next time something like that strikes your fancy (h/t: iOS Dev Weekly):

venmo / VENCalculatorInputView: Calculator keyboard used in the Venmo iOS app:

687474703a2f2f692e696d6775722e636f6d2f565767796d6a482e676966.gif

If you don’t have custom input needs but just want to improve the regular keyboard experience, there’s news for you too: Fleksy has released an iOS SDK that lets users long press to switch keyboards, if they’ve installed the free Fleksy app:

Screen Shot 2014-02-23 at 2.34.47 PM.png

And here’s another project to improve the default keyboard:

tonqa / JustType – The Better Keyboard for iOS

JustType is a keyboard extension using swipe gestures, highlighting and suggestions. It is built to be used in any iOS text editor and all text-intensive iOS apps. And it is really easy to use. If you want to have a video demonstration you can find it on this blogpost.

And just as a side caution, if you do get all excited to implement a custom keyboard with transparency and it displays funny in iOS 7, check out this Stack Overflow question!

Analysts agree that a mix of emulators/simulators and real devices are necessary to optimize your mobile app testing - learn more in this white paper, brought to you in partnership with Sauce Labs.

Topics:

Published at DZone with permission of Alex Curylo, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}