Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Creating Keyboard Extensions
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
John Estropia
May 12, 2018
Technology
0
81
Creating Keyboard Extensions
This is the talk I gave at the May 2018 Tokyo iOS Meetup
John Estropia
May 12, 2018
Tweet
Share
More Decks by John Estropia
See All by John Estropia
WWDC Party Intro to CoreStore
johnestropia
0
64
Making an Efficient Deploy Bot
johnestropia
0
450
Making Sense of Neural Network Training
johnestropia
0
84
My journey taming Core Data: An intro to the CoreStore library
johnestropia
0
170
Fun with Swift 4 KeyPaths
johnestropia
1
650
Pairs JP Team's iOS Deployment
johnestropia
0
950
Making Slackbots deploy iOS apps for you
johnestropia
2
230
OSSの作法(本題)
johnestropia
0
80
Other Decks in Technology
See All in Technology
メタデータ同期に潜んでいた問題 〜 Cache Stampede 時の Cycle Wait を⾒つけた話
lycorptech_jp
PRO
0
160
OCI技術資料 : コンピュート・サービス 概要
ocise
4
54k
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
110
Abuse report だけじゃない。AWS から緊急連絡が来る状況とは?昨今の攻撃や被害の事例の紹介と備えておきたい考え方について
kazzpapa3
1
390
事例に見るスマートファクトリーへの道筋〜工場データをAI Readyにする実践ステップ〜
hamadakoji
1
270
EMからVPoEを経てCTOへ:マネジメントキャリアパスにおける葛藤と成長
kakehashi
PRO
9
1.5k
Evolution of Claude Code & How to use features
oikon48
1
570
JAWS DAYS 2026 ExaWizards_20260307
exawizards
0
390
kintone開発のプラットフォームエンジニアの紹介
cybozuinsideout
PRO
0
850
非情報系研究者へ送る Transformer入門
rishiyama
10
6.8k
Oracle Database@Google Cloud:サービス概要のご紹介
oracle4engineer
PRO
5
1.1k
JAWS FESTA 2025でリリースしたほぼリアルタイム文字起こし/翻訳機能の構成について
naoki8408
1
240
Featured
See All Featured
Tell your own story through comics
letsgokoyo
1
840
The Curse of the Amulet
leimatthew05
1
9.8k
Navigating Team Friction
lara
192
16k
Accessibility Awareness
sabderemane
0
76
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
140
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
120
Building an army of robots
kneath
306
46k
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Between Models and Reality
mayunak
2
230
Facilitating Awesome Meetings
lara
57
6.8k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.4k
Transcript
IOS KEYBOARD EXTENSIONS TOKYO IOS MEETUP
TOKYO IOS MEETUP @JOHNESTROPIA Developer since 2008 (mostly Mobile apps)
Principal Engineer @ Other hobby projects http://github.com/JohnEstropia/CoreStore
TOKYO IOS MEETUP AGENDA ▸ Creating Keyboard Extensions ▸ Pitfalls
▸ Tips ▸ App Demo
TOKYO IOS MEETUP CREATING A KEYBOARD EXTENSION
TOKYO IOS MEETUP GENERATED FILE Just a UIViewController subclass
TOKYO IOS MEETUP CREATING A KEYBOARD EXTENSION Add keyboard buttons
here as you normally would
TOKYO IOS MEETUP UIINPUTVIEWCONTROLLER Same as self.view
TOKYO IOS MEETUP CREATING A KEYBOARD EXTENSION Middle-man for the
UITextField/UITextVIew
TOKYO IOS MEETUP PITFALL #1 ▸ There is no perfect
way to access the UITextInput’s instance But this is a good thing security-wise
TOKYO IOS MEETUP PITFALL #1 ▸ There is no perfect
way to access the UITextInput’s complete text or its length ▸ But there is a workaround that works “most of the time”
TOKYO IOS MEETUP
TOKYO IOS MEETUP ABCDEF
TOKYO IOS MEETUP ABCDEF
TOKYO IOS MEETUP ABC DEF So to get the complete
text we just append these two together. Right? Right??
TOKYO IOS MEETUP ABC? DEF
TOKYO IOS MEETUP ABC ?DEF
TOKYO IOS MEETUP ABC?D EF
TOKYO IOS MEETUP PITFALL #1 ▸ There is no perfect
way to access the UITextInput’s complete text or its length ▸ Some characters such as (?) and (!) have special treatment! (bug?)
TOKYO IOS MEETUP CREATING BUTTONS
TOKYO IOS MEETUP CREATING BUTTONS
TOKYO IOS MEETUP PLAYING CLICK SOUNDS protocol
TOKYO IOS MEETUP PITFALL #2 ▸ Keyboard “Full Access” is
unfortunately needed even for minor functions ▸ Play clicking sounds ▸ Read from or write to a shared NSUserDefaults ▸ Accessing the clipboard
TOKYO IOS MEETUP PITFALL #2 ▸ Keyboard “Full Access” is
unfortunately needed even for minor functions Info.plist
TOKYO IOS MEETUP PITFALL #2 ▸ Keyboard “Full Access” is
unfortunately needed even for minor functions
TOKYO IOS MEETUP PITFALL #3 ▸ Apps can reject custom
keyboards (e.g. for security) UIApplicationDelegate
TOKYO IOS MEETUP PITFALL #4 ▸ Memory allotted to Keyboard
extensions is severely limited (~30MB) ▸ Avoid using too many nib files / image resources
TIPS
TOKYO IOS MEETUP TIP #1 ▸ Debugging a Keyboard in
a specific locale will run any app in that locale ▸ No need to change the device language!
TOKYO IOS MEETUP
TOKYO IOS MEETUP TIP #2 ▸ You are not restricted
to a single character per input
TOKYO IOS MEETUP TIP #3 ▸ The Globe button logic
can be simulated in a single line!
TOKYO IOS MEETUP TIP #3 ▸ The Globe button logic
can be simulated in a single line!
TOKYO IOS MEETUP TIP #4 ▸ You can check the
"Allow full access" status by twiddling with the clipboard
TOKYO IOS MEETUP
TOKYO IOS MEETUP When the user's clipboard is empty
APP DEMO
TOKYO IOS MEETUP WHAT I'VE LEARNED ▸ There's a ton
of untapped use-cases in third-party apps that can be improved with custom keyboards ▸ Think of them as plugins
THANKS @JohnEstropia