Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
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
80
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
83
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
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
450
[JAWS-UG 横浜支部 #91]DevOps Agent vs CloudWatch Investigations -比較と実践-
sh_fk2
1
250
Playwright x GitHub Actionsで実現する「レビューしやすい」E2Eテストレポート
kinosuke01
0
540
意外とあった SQL Server 関連アップデート + Database Savings Plans
stknohg
PRO
0
300
グレートファイアウォールを自宅に建てよう
ctes091x
0
140
Uncertainty in the LLM era - Science, more than scale
gaelvaroquaux
0
820
新 Security HubがついにGA!仕組みや料金を深堀り #AWSreInvent #regrowth / AWS Security Hub Advanced GA
masahirokawahara
1
1.7k
評価駆動開発で不確実性を制御する - MLflow 3が支えるエージェント開発
databricksjapan
1
110
エンジニアとPMのドメイン知識の溝をなくす、 AIネイティブな開発プロセス
applism118
4
1.2k
技術以外の世界に『越境』しエンジニアとして進化を遂げる 〜Kotlinへの愛とDevHRとしての挑戦を添えて〜
subroh0508
1
430
Snowflakeでデータ基盤を もう一度作り直すなら / rebuilding-data-platform-with-snowflake
pei0804
4
1.2k
GitHub Copilotを使いこなす 実例に学ぶAIコーディング活用術
74th
3
2.3k
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
Agile that works and the tools we love
rasmusluckow
331
21k
Docker and Python
trallard
47
3.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Documentation Writing (for coders)
carmenintech
76
5.2k
We Have a Design System, Now What?
morganepeng
54
7.9k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Context Engineering - Making Every Token Count
addyosmani
9
500
Faster Mobile Websites
deanohume
310
31k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
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