Upgrade to Pro — share decks privately, control downloads, hide ads and more …

iPadOSでマウス・キーボード対応アプリを作る / iPadOS App using Pointer and Keyboard

cc4966
September 20, 2020

iPadOSでマウス・キーボード対応アプリを作る / iPadOS App using Pointer and Keyboard

iOSDC ( 2020 https://iosdc.jp/2020/ ) での発表「iPadOSでマウス・キーボード対応アプリを作る」の資料です。
資料中のスクショで説明に使ってるアプリは https://github.com/cc4966/iosdc2020-ipados-pointer-keyboard にあります。

iPadOS 13.4でついにマウスやトラックパッドを接続可能になったことでキーボードとマウスが揃い、iPadは以前よりもさらに作業・創作用マシンとしての真価を発揮できるようになりました。
このトークではマウス・キーボード対応アプリで抑えるべきポイントについてまとめます。

多くのアプリはマウスやキーボード対応をしていなくても大きな問題になることはありませんが、ドキュメント編集アプリなど、閲覧にとどまらない機能を提供するアプリではマウスへの対応を行うことがその使い勝手に大きく影響します。
また実際にテキストエディタでマウス対応を行った経験を踏まえて、マウス対応そのもの以外にもマウスやキーボードをフル活用するアプリで対応しておくと良いAPIについても合わせてお話しいたします。

- iPadOSにおけるマウス・キーボード
- マウス対応のための準備
- まず抑えるべき簡単な変更
- マウスカーソルの変更について
- マウス操作とタッチ操作を振り分ける
- あると嬉しいコンテキストメニュー
- iOS/iPadOSとキーボード
- シフトキーを使った範囲選択
- ショートカットコマンドなど

cc4966

September 20, 2020
Tweet

More Decks by cc4966

Other Decks in Programming

Transcript

  1. ϙΠϯλʔ ྖҬ͕େ͖͍৔߹ʢഎܠʹಁ໌౓͕͋Δʣ എܠʹಁ໌౓͕͋Δ ௨ৗ ྖҬ͕େ͖͍৔߹ σϑΥϧτͷ·· ϥϕϧपลͷΈΛIJHIMJHIU ϥϕϧपลͷΈΛIJHIMJHIU IPWFS ϙΠϯλʔ͸ͦͷ··

    ࢦఆͨ͠ྖҬΛബ͘৭෇͚ ϙΠϯλʔ͸ͦͷ·· ࢦఆͨ͠ྖҬΛബ͘৭෇͚ IJHIMJHIU ϙΠϯλʔ͸ࢦఆͨ͠ྖҬͷܗঢ় ϙΠϯλʔͷྖҬΛബ͘৭෇͚ ϙΠϯλʔ͸ͦͷ·· ࢦఆͨ͠ྖҬΛബ͘৭෇͚ʢؙ֯ʣ MJGU ϙΠϯλʔ͸ݟ͑ͳ͘ͳΔ ࢦఆͨ͠ྖҬʹϒϥʔ ϙΠϯλʔ͸ͦͷ·· ࢦఆͨ͠ྖҬʹϒϥʔ BVUPNBUJD IJHIMJHIUʹಉ͡ IJHIMJHIUʹಉ͡
  2. ϙΠϯλʔ ྖҬ͕େ͖͍৔߹ºഎܠ͕ෆಁ໌ͷ৔߹ എܠ͕ෆಁ໌ͷ৔߹ ௨ৗ ྖҬ͕େ͖͍৔߹ σϑΥϧτͷ·· MJGUʹಉ͡ MJGUʹಉ͡ IPWFS ϙΠϯλʔ͸ͦͷ··

    ࢦఆͨ͠ྖҬΛബ͘৭෇͚ ϙΠϯλʔ͸ͦͷ·· ࢦఆͨ͠ྖҬΛബ͘৭෇͚ IJHIMJHIU ϙΠϯλʔ͸ࢦఆͨ͠ྖҬͷܗঢ় ϙΠϯλʔͷྖҬΛബ͘৭෇͚ ϙΠϯλʔ͸ͦͷ·· ࢦఆͨ͠ྖҬΛബ͘৭෇͚ MJGU ϙΠϯλʔ͸ݟ͑ͳ͘ͳΔ ࢦఆͨ͠ྖҬ্͕͕࣋ͪΔ ϙΠϯλʔ͸ͦͷ·· ࢦఆͨ͠ྖҬ্͕͕࣋ͪΔ BVUPNBUJD MJGUʹಉ͡ MJGUʹಉ͡
  3. ίϯςΩετϝχϡʔ J04Ͱͷಋೖʢ$BUBMZTUొ৔ͷλΠϛϯάʣ w 6*$POUFYU.FOV*OUFSBDUJPO w ӈΫϦοΫͰίϯςΩετϝχϡʔΛදࣔ w $POUSPM  λοϓPSΫϦοΫ

    ΋Մ w ϩϯάλοϓͰ΋ίϯςΩετϝχϡʔΛ දࣔʢͬͪ͜͸͋Ε͹ϓϨϏϡʔ΋දࣔʣ w ϓϨϏϡʔΛλοϓͨ͠ࡍͷڍಈ͸ࣗ෼ ͰܾΊΔ͜ͱ͕Ͱ͖Δ
  4. ͓·͚ υϥοάˍυϩοϓ w J04Ͱಋೖ͞Εͨ w 6*%SBH*OUFSBDUJPO w λοϓ΋ϖϯγϧ΋ϩϯάλοϓ͢Δඞཁ͕͋ͬͨ w Ϛ΢εͰ͸ϊʔλΠϜͰυϥοάΛ։࢝Ͱ͖Δ

    w 6*%SPQ*OUFSBDUJPO w Ϛ΢εͩͱυϩοϓઌΛࢦͰӅͣ͞ʹࡁΉ let dragInteraction = UIDragInteraction(delegate: self) dragInteraction.isEnabled = true // for iOS dragView.addInteraction(dragInteraction)
  5. δΣενϟʔʢ)PWFSʣ ༨ஊɿ4XJGU6* w 4JXGU6*ʹ΋PO)PWFS΍IPWFS&⒎FDU͕͋Δ w PO)PWFS QFSGPSN  w IPWFS&⒎FDU

    @  w ͜ΕΒ͸J04΍$BUBMZTUͰ͸ಈ࡞͠ͳ͍ w 6*1PJOUFS*OUFSBDUJPOͱಉ࣮͡૷ʹͳ͍ͬͯΔͷ͔
  6. طଘͷδΣενϟʔ ΋ͬͱϚ΢εରԠ 6*"QQMJDBUJPO4VQQPSUT*OEJSFDU* OQVU&WFOUT :&4 /0 6*5PVDIͷUZQF JOEJSFDU1PJOUFS͕ೖͬͯ͘Δ ϙΠϯλʔ͸EJSFDUʹू໿͞ΕΔ 6*3PUBUJPO(FTUVSF3FDPHOJ[FS

    OVNCFS0G5PVDIFT OVNCFS0G5PVDIFT 6*1JODI(FTUVSF3FDPHOJ[FS OVNCFS0G5PVDIFT OVNCFS0G5PVDIFT 6*(FTUVSF3FDPHOJ[FSͷ BMMPXFE5PVDI5ZQFT JOEJSFDU1PJOUFS͕࢖͑Δ ϙΠϯλʔ͸EJSFDUʹू໿͞ΕΔ
  7. δΣενϟʔ 6*5BQ(FTUVSF3FDPHOJ[FS w CVUUPO.BTL3FRVJSFE w ΫϦοΫछผΛࢦఆͰ͖Δ w QSJNBSZΫϦοΫ w TFDPOEBSZӈΫϦοΫ

    w εΫϦʔϯλον͔ΒͷΠϕϯτ͸ڋ൱͠ͳ͍ݶΓૹΒΕͯ͘Δ w BMMPXFE5PVDI5ZQFTΛJOEJSFDU1PJOUFSͷΈʹ͢Δͱڋ൱Ͱ͖Δ