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
John Estropia
May 12, 2018
Technology
0
63
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
52
Making an Efficient Deploy Bot
johnestropia
0
340
Making Sense of Neural Network Training
johnestropia
0
51
My journey taming Core Data: An intro to the CoreStore library
johnestropia
0
140
Fun with Swift 4 KeyPaths
johnestropia
1
630
Pairs JP Team's iOS Deployment
johnestropia
0
870
Making Slackbots deploy iOS apps for you
johnestropia
2
170
OSSの作法(本題)
johnestropia
0
67
Other Decks in Technology
See All in Technology
Challenges - Open Farming Hackdays 2024
loleg
0
560
既存プロセスからの脱却と変化に適応するために必要なこと
cybozuinsideout
PRO
2
170
チーム単位で保守性を高める:独自指標と向上にむけた実践
tarappo
0
300
.NETの非同期戦略とUnityとの相互運用
neuecc
2
2.4k
サービス成長と共に肥大化するモノレポ、長くなるCI時間 / As services grow, monorepos get bigger and CI time gets longer
kohbis
5
2.1k
AMLD 2024 - Build Your Own GPT
donlelef
1
260
生成AIの不確実性と向き合うためのオブジェクト指向設計
tkikuchi1002
2
670
大規模なアジャイル開発の現場と技術負債 / Technical Debt
yoshiitaka
20
4k
LLM + RAG を使った SORACOM Support Bot の裏側の歴史
soracom
PRO
1
640
サービスメッシュ環境における OpenTelemetry 活用 / OpenTelemetry in Service Mesh
k6s4i53rx
2
840
沒想過的前端錯誤處理可能比你有做的還多
line_developers_tw
PRO
0
2k
20240321_生成AI時代のDevOps
kzkmaeda
2
610
Featured
See All Featured
Robots, Beer and Maslow
schacon
PRO
154
7.9k
Being A Developer After 40
akosma
56
580k
Art, The Web, and Tiny UX
lynnandtonic
288
19k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
113
18k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
19
1.6k
Music & Morning Musume
bryan
39
5.5k
The Pragmatic Product Professional
lauravandoore
24
5.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
644
57k
Designing for humans not robots
tammielis
247
25k
Design by the Numbers
sachag
274
18k
From Idea to $5000 a Month in 5 Months
shpigford
376
45k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
319
20k
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