IOS рдкрд░ VoiceOver: рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдг рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ

рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░! рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ рдиреЗрддреНрд░рд╣реАрди рдФрд░ рдЧрддрд┐рд╣реАрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЕрдкрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рдФрд░ рдЗрд╕реЗ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛!

рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдорджрдж рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛рдП accessibilityTraitsрдФрд░ рдиреЗрддреНрд░рд╣реАрди рдХреЗ рдЬреАрд╡рди рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдЗрди рд▓рдХреНрд╖рдгреЛрдВ рдХреЗ рдХрд╛рдо рдХреЛ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рддрд╛рдХрд┐ рдЕрдкрдиреА рдмреИрд╕рд╛рдЦреА рди рд▓рд┐рдЦреЗрдВред



IOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рд╖рдп рд╣реИ, рд╕рдм рдХреБрдЫ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реБрдЖ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реВрдВред

  1. рд╡реЙрдпрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдФрд░ рд╡реЙрдЗрд╕рдУрд╡рд░: рдмреНрд▓рд╛рдЗрдВрдб рдпрд╛ рд╕реНрдЯрд┐рд▓ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ ред
  2. IOS рдкрд░ VoiceOver: рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдг рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред
  3. IOS рдкрд░ VoiceOver: рдЖрдо рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рдиред
  4. рд╡реЙрдпрд╕рдУрд╡рд░, рд╡реЙрдпрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдФрд░ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ред (рдЪрд╛рд▓реВ)

рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдордиреЗ рд╡реЙрдпрд╕рдУрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдВрдзреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рд╕реМрджрд╛ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛: рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдирд┐рдпрдВрддреНрд░рдг, рдЙрдиреНрд╣реЗрдВ рд╕рдореВрд╣реАрдХреГрдд, рдирд┐рд╢реНрдЪрд┐рдд рдиреЗрд╡рд┐рдЧреЗрд╢рдиред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗ рдФрд░ "рд╕реБрд╡рд┐рдзрд╛рдУрдВ" рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдиреЗрддреНрд░рд╣реАрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЛ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЖрд╡реЗрджрди рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдирд┐рдпрдВрддреНрд░рдг рд╕реБрд╡рд┐рдзрд╛рдПрдБ - рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рдВрдЧреНрд░рд╣


VoiceOver рдореЗрдВ "рд╕реБрд╡рд┐рдзрд╛рдУрдВ" рдХрд╛ рдПрдХ рдорд╛рдирдХ рд╕реЗрдЯ рд╣реИ UITraitCollectionрдЬрд┐рд╕реЗ рдЖрдк рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рддрд╛рдХрд┐ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рди рдЖрдПрдВред рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рддреАрди рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рд╣реИ:

  1. рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдкреНрд░рдХрд╛рд░ред
  2. рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╕реНрдерд┐рддрд┐ред
  3. рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╡рд┐рд╢реЗрд╖ рдЧреБрдгред

рдореИрдВ рддреБрд░рдВрдд рдПрдХ рдкрд┐рдЬреНрдЬрд╛ рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрди рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рджрд┐рдЦрд╛рдКрдВрдЧрд╛:



рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдкреНрд░рдХрд╛рд░


VoiceOver рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рддрддреНрд╡ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЬрд╛рдирддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдмрддрд╛рдКрдВрдЧрд╛ред

рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЖрдк рд░реЛрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬрд▓реНрджреА рд╕реЗ рдЙрдирдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

  • .staticText- рд╢рд┐рд▓рд╛рд▓реЗрдЦреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдирд╣реАрдВ рдмрджрд▓рддреЗ рд╣реИрдВред рдкрд╛рда рдХреЛ рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред
  • .header- рд╣реИрдбрд┐рдВрдЧ: рдкрд┐рдЬреНрдЬрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ, рд╣реЗрдбрд┐рдВрдЧред
  • .button- рдмрдЯрдиред рд╕рдХреНрд░рд┐рдп рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рдХрд╛ рдореБрдЦреНрдп рддрд░реАрдХрд╛: рд╕рдВрд░рдЪрдирд╛, рдмрдЯрди рдмрджрд▓реЗрдВред
  • .image - рдЪрд┐рддреНрд░ред
  • .link- рд╕рдВрдкрд░реНрдХред рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рджреБрд░реНрд▓рдн рдЕрддрд┐рдерд┐, рдЕрдХреНрд╕рд░ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ред
  • .searchField - рдЦреЛрдЬред

рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрддреЗ рд╣реИрдВ:


  1. рд╢реАрд░реНрд╖рдХ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВред .staticTextрд╕рднреА рд▓реЗрдмрд▓ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди .headerрд╢реАрд░реНрд╖рдХ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЬрдм рдпрд╣ рдЬрд░реВрд░рдд рд╣реИ .headerрдФрд░ .staticTextред
  2. рддрд╕реНрд╡реАрд░ рдХреЗ рдиреАрдЪреЗ рдЬрдЧрд╣ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░реЗрдВред рдкрд┐рдЫрд▓реА рдмрд╛рд░ рд╣рдордиреЗ рд╡реЙрдпрд╕рдУрд╡рд░ рд╕реЗ рд╕рднреА рдЫреЛрдЯреА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЛ рдЫрд┐рдкрд╛рдпрд╛ рдерд╛, рд╣рдордиреЗ рд╕реВрдЪрдирд╛рддреНрдордХ рд╕рд╛рдордЧреНрд░реА рдирд╣реАрдВ рдЦреЛрдИред рдЗрд╕ рдмрд╛рд░ рддрд╕реНрд╡реАрд░ рдмрдбрд╝реА рд╣реИ, рдЗрд╕реЗ рдЫрд┐рдкрд╛рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ: рдЬрдЧрд╣ рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рдПрдЧреА, рдпрд╣ рдЕрдЬреАрдм рд╣реИред рдЬреИрд╕реЗ рд╣реА рд╣рдо .imageрд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддреЗ рд╣реИрдВ рд╣рдо рдЪрд┐рддреНрд░ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддреЗ рд╣реИрдВ .accessibilityLabel = " "ред

рдмреЗрд╢рдХ, рдХрд░реАрдмреА рдмрдЯрди рдФрд░ рдЯреЛрдХрд░реА рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдЖрдЦрд┐рд░реА рд▓реЗрдЦ рдореЗрдВ рдерд╛ред

рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╕реНрдерд┐рддрд┐


рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рддреАрди рдЕрд╡рд╕реНрдерд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ: рд╕рд╛рдорд╛рдиреНрдп, рдЪрдпрдирд┐рдд рдФрд░ рдЕрдХреНрд╖рдоред рдпрд╣ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рдордп рдкрд░ рд╕реБрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЪреБрдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:



  • .selected- рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рдордиреЗ "рдЪрдпрдирд┐рдд" рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╕рднреА рд╕реНрд╡рд┐рдЪ рдФрд░ рдЪреЗрдХрдмреЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИред
  • .notEnabled- "рдЕрдиреБрдкрд▓рдмреНрдз" рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рджреГрд╢реНрдпрдорд╛рди рдирд╣реАрдВ рд╣реИ Interface BuilderрдФрд░ рдХреЗрд╡рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реИред

рдкрд┐рдЬреНрдЬрд╛ рдореЗрдВ рдЯреЙрдкрд┐рдВрдЧ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:


рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдордЭрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЯреЙрдкрд┐рдВрдЧ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕реЗрд▓ рдХреЗ рдЕрдВрджрд░ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред accessibilityTraitsрдЗрд╕ OptionSetрдХрд╛рд░рдг рд╣реИ рдХрд┐ рдбрд╛рд▓рдиреЗ .formUnionрдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ .formIntersection:

class ToppingCell: UICollectionViewCell {
    override var isSelected: Bool {
        didSet {
            if isSelected {
                accessibilityTraits.formUnion(.selected)
            } else {
                accessibilityTraits.formIntersection(.selected)
            }
        }
    }
    ...
}

рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╡рд┐рд╢реЗрд╖ рдЧреБрдг


рдХреБрдЫ рдФрд░ рдЕрд╕рд╛рдорд╛рдиреНрдп рдЧреБрдг рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реЗ рдкрд┐рдЬреНрдЬрд╛ рд╕реНрдХреНрд░реАрди рдлрд┐рдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред рд╢рд╛рдпрдж рдЗрд╕рд╕реЗ рдЖрдкрдХрд╛ рд╕рдордп рдмрдЪреЗрдЧрд╛ред

  • .summaryElement тАФ , . , , . , .
  • .updatesFrequently тАФ  . .
  • .causesPageTurn тАФ  . accessibilityScroll(.next) , . .firstResponder.
  • .startsMediaSession тАФ  VoiceOver , . , . , VoiceOver .
  • .playsSound тАФ  , ( , ).
  • .allowsDirectInteraction- рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдФрд░ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдПред рдирд┐рдпрдВрддреНрд░рдг рддреБрд░рдВрдд рд╕реНрдкрд░реНрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ VoiceOver рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
  • .keyboardKey- рдХрдВрдЯреНрд░реЛрд▓ рдХреАрдмреЛрд░реНрдб рдкрд░ рдмрдЯрди рдХреА рддрд░рд╣ рд░рд┐рдПрдХреНрдЯ рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИред рд╡реЙрдЗрд╕рдУрд╡рд░ рдХреЗ рдкрд╛рд╕ рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдИ рдЯреЗрдХреНрд╕реНрдЯ рдЗрдирдкреБрдЯ рдореЛрдб рд╣реИрдВ:

    - standart typing- рд╡реЙрдЗрд╕рдУрд╡рд░ рдореЗрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдмрдЯрди рдХреЗ рд░реВрдк рдореЗрдВ: рдкрд╣рд▓реЗ рдкрддреНрд░ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реАрдВ рднреА рдбрдмрд▓-рдЯреИрдк рдХрд░реЗрдВред рдЖрдк рджреЛрдиреЛрдВ рд╣рд╛рдереЛрдВ рд╕реЗ рддреЗрдЬреА рд╕реЗ рдЯрд╛рдЗрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдХреАрдмреЛрд░реНрдб рдХреЛ рдПрдХ рдЙрдВрдЧрд▓реА (рдЕрдХреНрд╖рд░реЛрдВ рдХреЛ рдЖрд╡рд╛рдЬ рджреА рдЬрд╛рдПрдЧреА) рдкрд░ рдЪрд▓рд╛рдПрдВ рдФрд░ рдХреБрдВрдЬреА рдЪрдпрди рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░реА рдЙрдВрдЧрд▓реА рд╕реЗ рд╕реНрдкрд░реНрд╢ рдХрд░реЗрдВред
    - touch typing- рдПрдХ-рд╕рд╢рд╕реНрддреНрд░ рдЧрддрд┐ рдбрд╛рдпрд▓: рдХреАрдмреЛрд░реНрдб рд╕реЗ рд╡реЙрдЗрд╕ рдмрдЯрди рддрдХ рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рд╕реНрд╡рд╛рдЗрдк рдХрд░реЗрдВред рдкрддреНрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рдЫреЛрдбрд╝реЗрдВред
    - direct touch typing- рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реЗрдЯ рдХреА рддрд░рд╣, рдЬреИрд╕реЗ рдХрд┐ VoiceOver рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╡рд┐рднрд┐рдиреНрди рдЗрдирдкреБрдЯ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ:


рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рдЖрдИрдмреА рдмреЙрдХреНрд╕ рдХреЛ рдЪреЗрдХ рдХрд░реЗрдВред рдЕрдирдЬрд╛рдиреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде, рдпрд╣ рдмрд╕ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд▓рдЧ рд╕реЗред

рд╢рдХреНрддрд┐рд╢рд╛рд▓реА .adjustable рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛


рдФрд░ рдЖрдЦрд┐рд░реА, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рдХреНрд╖рдг .adjustableрдПрдХ рддрддреНрд╡ рд╣реИ рдЬрд┐рд╕реЗ рд╡рд┐рдирд┐рдпрдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдпрд╣ рд╣реИ рдХрд┐ рдХреИрд╕реЗ UIStepperрдФрд░ рдХрд╛рдо рдХрд░реЗрдВ UISliderред рдореВрд▓реНрдп рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдКрдкрд░ рдпрд╛ рдиреАрдЪреЗ рд╕реНрд╡рд╛рдЗрдк рдХрд░реЗрдВ (рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдмрд╛рдПрдВ рдпрд╛ рджрд╛рдПрдВ рд╕реНрд╡рд╛рдЗрдк рдкрдбрд╝реЛрд╕реА рддрддреНрд╡ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ )ред рдпрджрд┐ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ UIPanGestureRecognizer рд╣реИ, рддреЛ рдЖрдк рджреЛ рдмрд╛рд░ рдЯреИрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреВрд╕рд░рд╛ рдЯреИрдк рдкрдХрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЬреЗрд╕реНрдЪрд░ рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ VoiceOver рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдЙрджрд╛рд╣рд░рдг .adjustable:

рдЯреЗрд╕реНрдЯ рд╕реНрд╡рд┐рдЪред рдкрд░реАрдХреНрд╖рдг рд╕реЗрдЯрдЕрдк рдореЗрдВ рдкрд╛рдВрдЪ рдмрдЯрди рд╣реЛрддреЗ рд╣реИрдВ: рдкрд┐рдЬреНрдЬрд╛ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рджреЛред рдЙрдиреНрд╣реЗрдВ рд╕рдореВрд╣реАрдХреГрдд рдФрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдкрд╛рдБрдЪ рдХреЗ рдмрдЬрд╛рдп рджреЛ рдмрд╛рдпреЗрдВ рд╣реЛрдВ: тАЬрдЖрдХрд╛рд░, рдФрд╕рддред рд╕рдорд╛рдпреЛрдЬрди рдЖрдЗрдЯрдо " рдФрд░тАЬрдЖрдЯрд╛, рдкрд╛рд░рдВрдкрд░рд┐рдХред рд╕рдорд╛рдпреЛрдЬрди рдЖрдЗрдЯрдоред "



4 рдЪрд░рдгреЛрдВ рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛:

  1. рдмрдЯрдиреЛрдВ рдХреЗ рд╕рд╛рде рдХрдВрдЯреЗрдирд░ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдПрдВред
  2. рдПрдХ рд▓рдХреНрд╖рдг рд░рдЦреЛ .adjustableред
  3. рдмрдврд╝рддреЗ рдФрд░ рдШрдЯрддреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВред
  4. рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдорд╛рди рд▓реМрдЯрд╛рдПрдВ .accessibilityValueред

override public func awakeFromNib() {
        super.awakeFromNib()
        
        isAccessibilityElement = true // 1
        accessibilityTraits = .adjustable // 2
    }


extension SegmentedControl {
    override public func accessibilityIncrement() { // 3
        controller.selectNext(increment: +1)
    }
    
    override public func accessibilityDecrement() { // 3
        controller.selectNext(increment: -1)
    }
    
    public override var accessibilityValue: String? { // 4
        get {
            return selectedSegment?.accessibilityValue
        } set { }
    }
}

рдЕрдм, рд╕реНрд╡рд╛рдЗрдк рдЕрдк рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж accessibilityIncrement(), рдЖрдк рдЖрдВрддрд░рд┐рдХ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рдмрдврд╝рд╛рдПрдВрдЧреЗ, рдФрд░ VoiceOver accessibilityValue.

рдХреБрд▓ рд░рд╛рд╢рд┐ рдЧрдгрдирд╛ рд╕реЗ рдирдпрд╛ рдорд╛рди рдкрдврд╝реЗрдЧрд╛ ред рдЗрд╕ рдмреНрд▓реЙрдХ рдореЗрдВ рд╣рдо рдЪрд╛рд░ рдХрдВрдЯреНрд░реЛрд▓ рджреЗрдЦрддреЗ рд╣реИрдВ: рдорд╛рдЗрдирд╕ рдмрдЯрди, рдорд╛рддреНрд░рд╛, рдкреНрд▓рд╕ рдмрдЯрди рдФрд░ рдХреАрдорддред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдПрдХ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ viewрдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ : "рдорд╛рддреНрд░рд╛, 1, 575 рд░реВрдмрд▓ред рд╕рдорд╛рдпреЛрдЬрди рдЖрдЗрдЯрдоред " рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд╕реНрд╡рд╛рдЗрдк рдХреЗ рдмрд╛рдж, рдорд╛рддреНрд░рд╛ рдмрджрд▓ рдЬрд╛рдПрдЧреА, рдФрд░ рдлрд┐рд░ рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдореВрд▓реНрдп рдЙрдЪреНрдЪрд╛рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



рдХреНрд╖реИрддрд┐рдЬ UICollectionViewред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ .adjustableрдХреНрд╖реИрддрд┐рдЬ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ UICollectionViewред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореЗрдиреВ рдпрд╛ рдЯреИрдХреНрд╕реА рдореЗрдВ рдПрдХ рдХрд╛рд░ рдкрд░ рдПрдХ рд╢реЗрдпрд░ рдЪреБрдиреЗрдВред



рдирд┐рд╖реНрдХрд░реНрд╖


рдЗрд╕ рдмрд╛рд░ рд╣рдордиреЗ рд▓рдХреНрд╖рдг рджрд┐рдЦрд╛рдП: рдЙрдирдХреЗ рдкреНрд░рдХрд╛рд░, рдЕрд╡рд╕реНрдерд╛ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдирдХ рд╕реЗрдЯ рд╣реИ ред рдЬрдЯрд┐рд▓ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк .adjustable рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдЧрд▓реА рдмрд╛рд░, рдЖрдЗрдП рдЖрдо рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рджреЗрдЦреЗрдВ : рдмрд╛рдИрдкрд╛рд╕ рдСрд░реНрдбрд░, рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ, рд▓реЛрдбрд┐рдВрдЧ рдЗрдВрдбрд┐рдХреЗрдЯрд░реНрд╕ред

рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдбреЛрдбреЛ рдкрд┐рдЬреНрдЬрд╛ рдореЛрдмрд╛рдЗрд▓ рдЪреИрдирд▓ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ ред

рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореЛрдмрд╛рдЗрд▓ рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рд░рд┐рдХреНрддрд┐ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реВрдВ: рд╕реАрдирд┐рдпрд░ iOS рдбреЗрд╡рд▓рдкрд░ (рдирд┐рдЬрд╝рдиреА рдиреЛрд╡рдЧреЛрд░реЛрдб)ред


All Articles