iosdc2018.pdf

Cc8ec9594b83b5dc3c7eef345c05dc8d?s=47 shiz
September 01, 2018

 iosdc2018.pdf

iosdc2018でLTをしたときのアクセシビリティについての資料です。

Cc8ec9594b83b5dc3c7eef345c05dc8d?s=128

shiz

September 01, 2018
Tweet

Transcript

  1. Πν͔Β࢝ΊΔ ΞΫηγϏϦςΟ J04%$   TIJ[ ͣ͠ !TU[O d·ͣ͸Ͱ͖Δͱ͜Ζ͔Βd

  2. ࣗݾ঺հ ߴా৽ࢁ 5BLBUB4IJO[BO 4IJ[ ͣ͠  גࣜձࣾΦϑΟεࠏ ϞόΠϧ͔ΒΠϯϑϥ·Ͱ΍Δ
 ࡶଟͳΤϯδχΞ
 4XJGU

    "OESPJE LPUMJO "OHVMBS /PEFKT $ 1)1 +BWB  J04ΤϯδχΞ໨ࢦ͍ͯ͠·͢
  3. ຊ೔ͷςʔϚ͸ ΞΫηγϏϦςΟ

  4. ΞΫηγϏϦςΟ ͬͯʁ

  5. ํ๏ͱঢ়گʹΑΒͣ ୭΋͕৘ใΛ ౳͘͠औಘͰ͖Δ͜ͱ

  6. ୭ʹͱͬͯʁ

  7. ΞΫηγϏϦςΟͬͯ Կ͔ಛผͳ΋ͷʁ

  8. ྫ͑͹

  9. ి೾͕ೖΒͳ͍….

  10. ࿹͕࢖͑ͳ͍….

  11. δϣΪϯάத ӡసத ຬһిंͷத ଠཅ͕রΓ͚ͭΔ೔தͷ֎ ΠϠϗϯ๨ΕͯԻ͕ฉ͚ͳ͍ ը໘͕όΩόΩ ՙ෺Ͱ྆ख͕;͕͍ͬͯ͞Δ ௨ৗͷૢ࡞͕ࠔ೉ͳঢ়گ

  12. ΞΫηγϏϦςΟ͸ ୭ʹͰ΋ඞཁͳ΋ͷ

  13. Ͳ͏΍ͬͯ ΞΫηγϒϧʹ͢Δʁ

  14. J04)VNBO*OUFSGBDFHVJEFMJOFT )*( IUUQTEFWFMPQFSBQQMFDPNEFTJHOIVNBOJOUFSGBDFHVJEFMJOFTJPTBQQ BSDIJUFDUVSFBDDFTTJCJMJUZ

  15. υΩϡϝϯτ IUUQTEFWFMPQFSBQQMFDPNBDDFTTJCJMJUZ

  16. ۩ମతͳػೳ̎ͭ঺հ

  17. %ZOBNJD5ZQF

  18. None
  19. None
  20. Ϣʔβͷઃఆʹ߹Θͤͯ จࣈͷେ͖͕͞มΘΔ

  21. ઃఆ͔ΒจࣈαΠζΛมߋ

  22. ΞΫηγϏϦςΟػೳͰ ͞Βʹେ͖ͳจࣈ

  23. 5FYU4UZMFΛબͿ νΣοΫΛ͚ͭΔ

  24. QSJWBUFMFUVTFS/BNF6*-BCFM  VTFS/BNFGPOU6*'POUQSFGFSSFE'POU GPS5FYU4UZMFUJUMF  VTFS/BNFBEKVTUT'POU'PS$POUFOU4J[F$BUFHPSZUSVF จࣈͷେ͖͕͞มΘΔ

  25. FYUSB4NBMM FYUSB&YUSB&YUSB-BSHF

  26. BDDFTTJCJMJUZ.FEJVN BDDFTTJCJMJUZ&YUSB&YUSB&YUSB-BSHF

  27. %ZOBNJD5ZQF4J[FT 4UZMF 8FJHIU Y4NBMM 4NBMM .FEJVN -BSHF Y-BSHF YY-BSHF YYY-BSHF

    -BSHF5JUMF 3FHVMBS        5JUMF 3FHVMBS        5JUMF 3FHVMBS        5JUMF 3FHVMBS        )FBEMJOF 4FNJ#PME        #PEZ 3FHVMBS        $BMMPVU 3FHVMBS        4VCIFBE 3FHVMBS        'PPUOPUF 3FHVMBS        $BQUJPO 3FHVMBS        $BQUJPO 3FHVMBS        ϑΥϯτ͸4BO'SBODJTDP
  28. -BSHFS"DDFTTJCJMJUZ5ZQF4J[FT 4UZMF 8FJHIU "9 "9 "9 "9 "9 -BSHF5JUMF 3FHVMBS

         5JUMF 3FHVMBS      5JUMF 3FHVMBS      5JUMF 3FHVMBS      )FBEMJOF 4FNJ#PME      #PEZ 3FHVMBS      $BMMPVU 3FHVMBS      4VCIFBE 3FHVMBS      'PPUOPUF 3FHVMBS      $BQUJPO 3FHVMBS      $BQUJPO 3FHVMBS      ϑΥϯτ͸4BO'SBODJTDP
  29. J04͔ΒΧελϜϑΥϯτʹ΋ରԠ 8FC7JFXͰ΋ར༻Մೳ QSJWBUFMFUDPOUFOU6*-BCFM  JGMFUGPOU6*'POU OBNF/PUFXPSUIZ TJ[F \ DPOUFOUGPOU6*'POU.FUSJDTEFGBVMUTDBMFE'POU GPSGPOU

    ^ DPOUFOUBEKVTUT'POU'PS$POUFOU4J[F$BUFHPSZUSVF CPEZ\ GPOUBQQMFTZTUFNCPEZ"QQMFσόΠεͷΈར༻Մೳ ^I\ GPOUTJ[FSFN ^
  30. ϨΠΞ΢τ่͕ΕΔ͜ͱ͕͋Δ QSJWBUFMFUEBUF6*-BCFM  EBUFpSTU#BTFMJOF"ODIPSDPOTUSBJOU FRVBM5P VTFS/BNFMBTU#BTFMJOF"ODIPS DPOTUBOU

  31. QSJWBUFMFUEBUF6*-BCFM  EBUFpSTU#BTFMJOF"ODIPSDPOTUSBJOU&RVBM5P4ZTUFN4QBDJOH#FMPX VTFS/BNFMBTU#BTFMJOF"ODIPS NVMUJQMJFS εϖʔεΛࣗಈͰௐ੔ͯ͘͠ΕΔ

  32. 7FSUJDBM#BTFMJOF4UBOEBSE4QBDJOHΛ࢖༻͢Δ

  33. QSJWBUFMFUEBUF6*-BCFM  EBUFUPQ"ODIPSDPOTUSBJOU FRVBM5PVTFS/BNFCPUUPN"ODIPS DPOTUBOU ͜Ε͸0," ࣮͸#BTFMJOFͰ੍໿͠ͳ͚Ε͹0,ͩͬͨΓ͢Δ

  34. override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { let isAccessibilityCategory = traitCollection.preferredContentSizeCategory.isAccessibilityCategory

    if isAccessibilityCategory != previousTraitCollection?.preferredContentSizeCategory.isAccessibilityCategory { updateLayoutContraints() } } ΞΫηγϏϦςΟͷઃఆΛΩϟονͰ͖Δ จࣈαΠζͷઃఆʹ߹ΘͤͯશͯͷཁૉΛਨ௚ʹϨΠΞ΢τ
  35. GSBNFPSJHJOZ  6*'POU.FUSJDTEFGBVMUTDBMFE7BMVF GPS  ઃఆʹ߹ΘͤͯจࣈͷαΠζ΋ಈతʹऔಘͰ͖Δ खಈͰઃఆ͍ͯ͠Δ৔߹ σϑΥϧτQU͔ΒઃఆʹԠͯ͡มԽ͢Δ

  36. 5BCMF7JFX$FMMʹ੍໿Λઃఆ wจࣈͷେ͖͞ʹΑͬͯηϧͷߴ͕͞ม ΘΔͷͰTFMGTJ[JOH͕ඞཁ w J04 ඪ४ͷ6*5BCMF7JFX$FMMΛ࢖༻ ͍ͯ͠Δ৔߹ɺࣗಈͰௐ੔ͯ͘͠ΕΔ wηϧͷߴ͞Λݻఆʹઃఆɺ·ͨ͸*#Λ ࢖༻͍ͯ͠Δ৔߹ɺௐ੔͕ඞཁ

  37. QSJWBUFMFUEBUF6*-BCFM  EBUFpSTU#BTFMJOF"ODIPSDPOTUSBJOU&RVBM5P4ZTUFN4QBDJOH#FMPX VTFS/BNFMBTU#BTFMJOF"ODIPS NVMUJQMJFS "VUP-BZPVUΛ࢖༻͍ͯ͠Δ৔߹ QSJWBUFMFUEBUF6*-BCFM  EBUFUPQ"ODIPSDPOTUSBJOU FRVBM5PVTFS/BNFCPUUPN"ODIPS

    DPOTUBOU
  38. MFUNBSHJO$('MPBU PWFSSJEFGVODTJ[F5IBU'JUT @TJ[F$(4J[F $(4J[F\ MFUVTFS4J[FVTFS/BNFTJ[F5IBU'JUT $(4J[F XJEUITFMGDPOUFOU7JFXCPVOETXJEUI IFJHIUHSFBUFTU'JOJUF.BHOJUVEF MFUEBUF4J[FEBUFTJ[F5IBU'JUT $(4J[F

    XJEUITFMGDPOUFOU7JFXCPVOETXJEUI IFJHIUHSFBUFTU'JOJUF.BHOJUVEF MFUDPOUFOU4J[FDPOUFOUTJ[F5IBU'JUT $(4J[F XJEUITFMGDPOUFOU7JFXCPVOETXJEUI IFJHIUHSFBUFTU'JOJUF.BHOJUVEF SFUVSO$(4J[F XJEUITFMGDPOUFOU7JFXCPVOETXJEUI IFJHIUVTFS4J[FIFJHIU EBUF4J[FIFJHIU DPOUFOU4J[FIFJHIU NBSHJO  ^ TJ[F5IBU'JUTΛPWFSSJEFͯ͠ߴ͞Λઃఆ DPOUFOU7JFXCPVOETTJ[FXJEUIͰԣ෯Λऔಘ "VUP-BZPVUΛ࢖༻͍ͯ͠ͳ͍৔߹
  39. *NBHF΋%ZOBNJD5ZQFʹରԠͰ͖Δ

  40. 1%'ͰYͷը૾Λ༻ҙ͢Δ νΣοΫΛ͚ͭΔ

  41. QSJWBUFMFUXFBUIFS*NBHF6**NBHF7JFX  XFBUIFS*NBHFBEKVTUT*NBHF4J[F'PS"DDFTTJCJMJUZ$POUFOU4J[F$BUFHPSZUSVF

  42. νΣοΫΛ͚ͭΔ

  43. ֬ೝํ๏

  44. "DDFTTJCJMJUZ*OTQFDUPS มߋʹԠͯ͡γϛϡϨʔλ΍࣮ػͷจࣈαΠζ΋มΘΔ

  45. 3VO"VEJU ରԠ͍ͯ͠ͳ͍ཁૉΛ֬ೝͰ͖Δ

  46. 7PJDF0WFS

  47. δΣενϟʔͰૢ࡞͢ Δը໘ಡΈ্͛ػೳ

  48. Ç Ç

  49. ࠨ΍͡Δ͠Ϙλϯ

  50. ࠨ໼ҹϘλϯʁ

  51. 6*"DDFTTJCJMJUZ BDDFTTJCJMJUZ-BCFM BDDFTTJCJMJUZ'SBNF BDDFTTJCJMJUZ5SBJUT BDDFTTJCJMJUZ7BMVF BDDFTTJCJMJUZ)JOU 6*7JFX

  52. private var backButton = UIButton() backButton.accessibilityTraits = UIAccessibilityTraitButton backButton.accessibilityLabel =

    "໭Δ" backButton.accessibilityValue = "" backButton.accessibilityHint = “લͷը໘ʹ໭Γ·͢ɻ"
  53. ໭ΔɺϘλϯ લͷը໘ʹ໭Γ·͢

  54. 6*7JFXʹઃఆ 6*"DDFTTJCJMJUZ&MFNFOU ͱͯ͠௥Ճ private var elements: [UIAccessibilityElement] = [] private

    func setAccessibility(x: CGFloat, y: CGFloat, title: String, text: String) { let frame = CGRect(x: x, y: y, width: barWidth, height: bounds.height - y) let element = UIAccessibilityElement(accessibilityContainer: self) element.accessibilityLabel = title element.accessibilityValue = text element.accessibilityFrameInContainerSpace = frame elements.append(element) } self.accessibilityElements = elements ΧελϜϏϡʔʹ΋ରԠՄೳ GSBNFͰదԠൣғΛࢦఆ ˞6*7JFXͷதͷઃఆͰ͢ɻ
  55. element.accessibilityFrameInContainerSpace = frame ࠇ࿮ͷൣғΛઃఆ

  56. checkButton.isAccessibilityElement = false 7PJDF0WFSʹ൓Ԡͤ͞ͳ͍Α͏ʹઃఆ΋Ͱ͖Δ νΣοΫϘοΫεʹର͢Δ ಡΈ্͛͸ߦΘΕͣɺ ηϧશମΛҰͭͷཁૉͱ͢Δ

  57. customView.accessibilityCustomActions = [ UIAccessibilityCustomAction( name: “Call", target: self, selector: #selector(activateCallButton)

    ), UIAccessibilityCustomAction( name: "Open address in Maps”, target: self, selector: #selector(activateLocationButton) ) ] 7PJDF0WFSݶఆͷΞΫγϣϯΛઃఆ UIAccessibility.post(notification: .screenChanged, argument: nil) 7PJDF0WFS΁มߋΛ௨஌ ϑΥʔΧεͷҠಈͳͲͷͨΊ
  58. ֬ೝํ๏

  59. "DDFTTJCJMJUZ*OTQFDUPS ཁૉʹͲΜͳ஋͕ઃఆ͞Ε͍ͯΔ͔͕Θ͔Δ

  60. ·ͱΊ

  61. ೉͍͠ʁ

  62. ಛผͳٕज़͕ શͯͰ͸ͳ͍

  63. wେࣄͳՕॴͷจࣈΛڧௐ͢Δ wϏσΦʹࣈນΛ͚ͭΔ w׬ྃ࣌ʹԻΛ໐Β͢

  64. શ෦΍Δ΂͖ Ͱ΋ͳ͍

  65. wରԠ͍ͯ͠Δ㱠࢖͍΍͍͢ wແཧʹ͢Δͱෛ୲͚ͩˢ

  66. ࣗ෼ͷΞϓϦʹ ඞཁͳ΋ͷ͸ʁ Λߟ͑ͯΈΔ

  67. IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED

    IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED IUUQTEFWFMPQFSBQQMFDPNWJEFPTQMBZXXED 88%$ಈըϦϯΫू Ұ෦ൈਮ
  68. ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ

  69. "QQMFͷΞΫηγϏϦςΟػೳ঺հ IUUQTXXXBQQMFDPNKQBDDFTTJCJMJUZ 6*,JU"DDFTTJCJMJUZ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPOVJLJUBDDFTTJCJMJUZ .FEJB"DDFTTJCJMJUZ IUUQTEFWFMPQFSBQQMFDPNEPDVNFOUBUJPONFEJBBDDFTTJCJMJUZ )VNBO*OUFSGBDF(VJEFMJOFT IUUQTEFWFMPQFSBQQMFDPNEFTJHOIVNBOJOUFSGBDFHVJEFMJOFT υΩϡϝϯτͳͲϦϯΫू

  70. ·ͣ͸ ମݧͯ͠Έ·͠ΐ͏

  71. IUUQTEFWFMPQFSBQQMFDPNWJEFPT QMBZXXED 7PJDF0WFS"QQ5FTUJOH#FZPOE5IF7JTVBMT

  72. 7PJDF0WFSͷ ࢖͍ํ ෇࿥

  73. Ç Ç

  74. ϗʔϜϘλϯΛ̏ճλοϓ ˞J1IPOF9͸αΠυϘλϯ

  75. ૢ࡞ํ๏ w ̍ຊࢦࠨӈεϫΠϓɹ߲໨Ҡಈ w ̎ຊࢦԼˠ্ɹશ߲໨ಡΈ্͛ w ̎ຊࢦ্ˠԼɹεϫΠϓ։࢝Ґஔ͔Βશ߲໨ಡΈ্͛ w ̏ຊࢦࠨӈεϫΠϓɹը໘ભҠ w

    ̍ຊࢦλοϓɹ߲໨આ໌Ի੠ग़ྗ w ̍ຊࢦμϒϧλοϓɹ࣮ߦ w ̎ຊࢦλοϓɹಡΈ্͛ఀࢭ
  76. εΫϦʔϯΧʔςϯ w ̏ຊࢦλοϓ̏ճ ζʔϜػೳ0/࣌͸̐ճ  w ը໘Λ0''ʹ͢Δɹ

  77. ϩʔλʔ w ̎ຊࢦͰը໘Λճసɹઃఆ߲໨มߋ w ̍ຊࢦ্ԼεϫΠϓɹ஋มߋ