Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
ペダルのある生活 / The Pedal
Hiron
April 27, 2018
Programming
0
300
ペダルのある生活 / The Pedal
Mobile Act OSAKA #4で発表したスライドです。
Hiron
April 27, 2018
Tweet
Share
More Decks by Hiron
See All by Hiron
Swift on Windows ファーストインプレッション / Swift on Windows First Impression
hironytic
0
380
iPadOSDC: Multiple Windows
hironytic
4
1.9k
だったら、俺が代わりにやってやる / Swift Zoomin' Challenge
hironytic
0
100
SwiftのNeverとボトム型 / Never as a Bottom Type
hironytic
2
580
4000のワーニングと戦え!これは警告だ! / 4000 Warnings
hironytic
2
630
シンボリケート / Ore-con 2018 Summer
hironytic
3
810
全部iOSにしゃべらせちゃえ! / iOSDC 2018 LT
hironytic
3
950
Cloud Firestore(の、スタブ)を作ってみた / Stubbing Cloud Firestore
hironytic
1
560
地方在住iOSエンジニアの生存戦略 / iOSDC 2017 LT
hironytic
1
4k
Other Decks in Programming
See All in Programming
Google IO 2022 社内LT会 / What's new in Android development tools
shingo_kobayashi
1
430
WindowsコンテナDojo:第6回 Red Hat OpenShift入門
oniak3ibm
PRO
0
180
Another 40 years of Commodore 64
mehowte
0
110
Register-based calling convention for Go functions
cjamhe01385
0
420
回帰分析ではlm()ではなくestimatr::lm_robust()を使おう / TokyoR100
dropout009
0
4.6k
Atomic Design とテストの○○な話
takfjp
2
830
料理の注文メニューの3D化への挑戦
hideg
0
300
パスワードに関する最近の動向
kenchan0130
1
340
「困りごと」から始める個人開発
ikumatadokoro
4
270
Agile Tech EXPO_2022/カケハシ
kakehashi
0
110
Carp言語さわってみた 〜鯉を取り戻せ編〜
tsin45
0
110
段階的な技術的負債の解消方法.pdf
ko2ic
2
960
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
351
21k
Designing for humans not robots
tammielis
242
24k
VelocityConf: Rendering Performance Case Studies
addyosmani
316
22k
Designing for Performance
lara
597
64k
Intergalactic Javascript Robots from Outer Space
tanoku
260
25k
Documentation Writing (for coders)
carmenintech
48
2.6k
The Brand Is Dead. Long Live the Brand.
mthomps
46
2.7k
Rebuilding a faster, lazier Slack
samanthasiow
62
7.3k
In The Pink: A Labor of Love
frogandcode
131
21k
Faster Mobile Websites
deanohume
294
29k
Adopting Sorbet at Scale
ufuk
63
7.6k
The Invisible Side of Design
smashingmag
290
48k
Transcript
ペダルのある生活 2018/04/27 Mobile Act OSAKA #4
なぜか土曜日 エライ人
自己紹介 • ひろん(一宮 浩教) • Twitter、GitHub、Qiita、 SlideShare、Speaker Deck: ➡hironytic •
株式会社 MetaMoJi(徳島勤務)
None
音楽関係の法人様 • 楽譜の共有に利用したい
iRig BlueTurn http://hookup.co.jp/products/ik-multimedia/irig-blueturn お荷物の お届けでーす
iRig BlueTurn • Bluetooth接続のハードウェアキーボードとして 動作する - MODE 1: ↑/↓ -
MODE 2: Page Up/Page Down - MODE 3: ←/→
どうなるのか考える ハードウェアキーボードに対応すればよい /以上 http://amzn.asia/iPpfS6t
ハードウェアキーボード対応(iOS) • UIKeyCommand • ファーストレスポンダーでUIKeyCommandオブジェ クトの配列を返せばよい extension UIResponder { @available(iOS
7.0, *) open var keyCommands: [UIKeyCommand]? { get } }
UIKeyCommandを返す class ViewController: UIViewController { override var canBecomeFirstResponder: Bool {
return true } override var keyCommands: [UIKeyCommand]? { return [ UIKeyCommand(input: UIKeyInputUpArrow, modifierFlags: [], action: #selector(pageUp)), UIKeyCommand(input: UIKeyInputDownArrow, modifierFlags: [], action: #selector(pageDown)), UIKeyCommand(input: UIKeyInputLeftArrow, modifierFlags: [], action: #selector(pageUp)), UIKeyCommand(input: UIKeyInputRightArrow, modifierFlags: [], action: #selector(pageDown)), ] } @objc func pageDown() { /* ࣍ͷϖʔδ */ } @objc func pageUp() { /* લͷϖʔδ */ } }
PageUp、PageDownは? • APIで定義されていない • Stack Overflowに答えがあった(*) - 文字列 "UIKeyInputPageUp", "UIKeyInputPageDown"
- Undocumented APIの使用になるかどうかは 知らんけど * https://stackoverflow.com/a/44321674/4313724 (たぶん大丈夫。知らんけど)
UIKeyCommandを返す override var keyCommands: [UIKeyCommand]? { return [ UIKeyCommand(input: UIKeyInputUpArrow,
modifierFlags: [], action: #selector(pageUp)), UIKeyCommand(input: UIKeyInputDownArrow, modifierFlags: [], action: #selector(pageDown)), UIKeyCommand(input: UIKeyInputLeftArrow, modifierFlags: [], action: #selector(pageUp)), UIKeyCommand(input: UIKeyInputRightArrow, modifierFlags: [], action: #selector(pageDown)), UIKeyCommand(input: "UIKeyInputPageUp", modifierFlags: [], action: #selector(pageUp)), UIKeyCommand(input: "UIKeyInputPageDown", modifierFlags: [], action: #selector(pageDown)), ] }
ハードウェアキーボード対応(Android) class MainActivity : AppCompatActivity() { override fun onKeyDown(keyCode: Int,
event: KeyEvent?): Boolean { when (keyCode) { KeyEvent.KEYCODE_DPAD_UP, KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_PAGE_UP -> { pageDown() return true } KeyEvent.KEYCODE_DPAD_DOWN, KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.KEYCODE_PAGE_DOWN -> { pageUp() return true } else -> { return super.onKeyDown(keyCode, event) } } } private fun pageDown() { /* ࣍ͷϖʔδ */ } private fun pageUp() { /* લͷϖʔδ */ } }
報告 ぼく「このペダルの場合、追加のSDKも特に必 要ありませんでした。お客様はこのペダルを使わ れるんですよね?」 エライ人「さあ?Amazonで最初に見つかった のを買ってみただけ」 ぼく「えっ・・・!?」
まとめ • iRig BlueTurnはハードウェアキーボード • iOSでは UIKeyCommand を使う • Androidでは
onKeyDown() を使う