рдЬрдм рдЖрдк рдЕрдВрдзреЗ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЕрдХреНрд╕рд░ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ: рдпрд╛ рддреЛ рдЖрджреЗрд╢ рдЦреЛ рдЬрд╛рдПрдЧрд╛, рдлрд┐рд░ рдлреЛрдХрд╕ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ред рджреВрд╕рд░реА рдУрд░, рдпреВрдПрдХреНрд╕ рд╣реИ, рдЬреЛ рдпрд╛рдж рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╕реНрдпрд╛рдУрдВ рдФрд░ рдЙрдирдХреЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдирд┐рдкрдЯреЗрдВрдЧреЗред
IOS рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рд╖рдп рд╣реИ, рд╕рдм рдХреБрдЫ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реБрдЖ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдЬрд╛рд░реА рдХрд░рддрд╛ рд╣реВрдВред
- рд╡реЙрдпрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдФрд░ рд╡реЙрдЗрд╕рдУрд╡рд░: рдмреНрд▓рд╛рдЗрдВрдб рдпрд╛ рд╕реНрдЯрд┐рд▓ рдХреЗ рд▓рд┐рдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреИрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░реЗрдВ ред
- IOS рдкрд░ VoiceOver: рдкреНрд░рддреНрдпреЗрдХ рдирд┐рдпрдВрддреНрд░рдг рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред
- IOS рдкрд░ VoiceOver: рдЖрдо рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рдиред
- рд╡реЙрдпрд╕рдУрд╡рд░, рд╡реЙрдпрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдФрд░ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ред (рдЪрд╛рд▓реВ)
рдореЗрдВ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдЕрдВрдзреЗ VoiceOver рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд╕рд╛рде рдирд┐рдкрдЯрд╛: рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд┐рдП рдирд┐рдпрдВрддреНрд░рдг, рдЙрдиреНрд╣реЗрдВ, рдлрд┐рдХреНрд╕реНрдб рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╡рд░реНрдЧреАрдХреГрдд рдХрд┐рдпрд╛ред рдореЗрдВ рджреВрд╕рд░реЗ рднрд╛рдЧ, рд╣рдо рдЖрдЧреЗ рд▓реЗ рдЧрдпрд╛ рдФрд░ "рд╕реБрд╡рд┐рдзрд╛рдУрдВ" рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдЕрдВрдзреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдХрд╛рдо рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХреА рдЬрд╛рдВрдЪ рдХреАредрдЖрдЬ рд╣рдо рдкрд┐рдЬреНрдЬрд╛ рд╕реНрдХреНрд░реАрди рдХреЛ рдПрдбреЙрдкреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗ: рд╣рдо рдХреНрд░реЙрд▓ рдСрд░реНрдбрд░ рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗ, рдЦрд░реАрдж рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдареАрдХ рдХрд░реЗрдВрдЧреЗ рдФрд░ рд▓реЛрдбрд┐рдВрдЧ рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗредрдирд┐рдпрдВрддреНрд░рдг рдлрд┐рд░ рд╕реЗ
рдпрджрд┐ рдЖрдк рд╡реЙрдЗрд╕рдУрд╡рд░ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╣реА рдХреНрд░рдо рдХреЛ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЧрд▓рдд рдХреНрд░рдо рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░реЗрдЧрд╛ рдФрд░ рдкрдврд╝реЗрдЧрд╛ рдЬреИрд╕рд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдмрдЯрди "рдмрдВрдж" рдФрд░ "рдЯреЛрдХрд░реА рдХреЗ рд╕рд╛рде" рд╣реБрдЖредрд╕реНрдХреНрд░реАрди рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдЧреА рдФрд░ рдмрдЯрди рдКрдкрд░ рд╣реИрдВ UIScrollView
ред рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ VoiceOver рдкрд╣рд▓реЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдЕрдВрджрд░ рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ UIScrollView
рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА рд╢реАрд░реНрд╖ рдмрдЯрди рдкрд╛рддрд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП, VoiceOver рдХрд╛ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд▓рдд рд╣реЛрдЧрд╛: рдмрдЯрди рд╕рдмрд╕реЗ рдКрдкрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдирдХреЗ рд╕рд╛рде рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдФрд░ рд╕реНрдХреЛрд░рд┐рдВрдЧ рд╢реБрд░реВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПредрдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдкрд╣рд▓реЗ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рд╡реЙрдпрд╕рдУрд╡рд░ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдХреНрд░рдо рдХреЛ рдХреИрд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд░рддрд╛ рд╣реИ: рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╕реЗ рддрддреНрд╡ рд▓реЗрддрд╛ рд╣реИ accessibilityElements
ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╡реЗ рд╕рднреА view
рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рд╣реИрдВ isAccessibilityElement = true
редрдЕрдм рд╣рдо рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдХреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрдЯрди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ accessibilityElements
:override var accessibilityElements: [Any]? {
get {
var elements = [Any]()
elements.append(contentsOf: [closeButton, cartButton])
elements.append(contentsOf: contentScrollView.accessibilityElements)
return elements
}
set { }
}
рд╕рдореВрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПрд╕рдорд░реНрдерди рдпреЛрдЧреНрдпрддрд╛ред рдмрдЪреНрдЪреЛрдВ
рдЖрдорддреМрд░ рдкрд░, рд╡реЙрдпрд╕рдУрд╡рд░ рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рдХреНрд░рдо рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ - рдмрд╛рдПрдВ рд╕реЗ рджрд╛рдПрдВ, рдКрдкрд░ рд╕реЗ рдиреАрдЪреЗ рддрдХ:
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдореВрд╣рдмрджреНрдз рдирд┐рдпрдВрддреНрд░рдг рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рд╡реЙрдпрд╕рдУрд╡рд░ рдХреЛ рд╕рдореВрд╣ рдореЗрдВ рдирд┐рдХрдЯрддрдо рддрддреНрд╡ рдкрд░ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдкрдврд╝рдиреЗ рдХреЗ рдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВред рд╕реЗрдЯ рдХрд░реЗрдВ .shouldGroupAccessibilityChildren = true
, рдФрд░ рдЖрджреЗрд╢ рддрддреНрд╡реЛрдВ рдХреА рдирд┐рдХрдЯрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдЧрд╛ред рд╕рдВрдкрддреНрддрд┐ рдХреЛ view
рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ред
рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдЖрдЗрдЯрдо рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ
рдПрдХ рдЕрдиреНрдп рд░реАрдбрд┐рдВрдЧ рдСрд░реНрдбрд░ рдореБрджреНрджрд╛ рд╣реИ рдЬрдм рд╡реЙрдпрд╕рдУрд╡рд░ рдкрд╣рд▓реА рдмрд╛рд░ рд╕реНрдХреНрд░реАрди рдЦреЛрд▓рддрд╛ рд╣реИ, рдпрд╣ рд╢реАрд░реНрд╖ рдмрд╛рдПрдВ рддрддреНрд╡ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рдпрд╣ рдмреИрдХ рдмрдЯрди рд╣реИред рдПрдХ рдУрд░, рдпрд╣ рдЖрдкрдХреЛ рдкрд┐рдЫрд▓реА рд╕реНрдХреНрд░реАрди рдкрд░ рдЬрд▓реНрджреА рд╕реЗ рд▓реМрдЯрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдЧрд▓рддреА рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реА рдУрд░, рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдХрд┐рд╕ рд╕реНрдХреНрд░реАрди рдкрд░ рдЕрдкрдиреА рд╕рдордЭ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред рдЖрдк рд╕реНрдерд┐рддрд┐ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВредApple рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?
рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ UINavigationController
"рдмреИрдХ" рдмрдЯрди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рд╕реНрдХреНрд░реАрди рдХреЗ рд╢реАрд░реНрд╖рдХ рдкрд░ рд░рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдЦреБрд▓рддрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдкрдХреНрд╖ рд╕реЗ, рдореБрдЭреЗ рд╢реАрд░реНрд╖рдХ рдпрд╛ рдкрд╣рд▓реЗ рдирд┐рдпрдВрддреНрд░рдг рдкрд░ рдзреНрдпрд╛рди рджреЗрдирд╛ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдирдИ рд╕реНрдХреНрд░реАрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддреЗ рд╣реИрдВред рдЖрдк рд╕реНрдХреНрд░рдм рдХреЗ рдЗрд╢рд╛рд░реЗ рд╕реЗ рд╡рд╛рдкрд╕ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ ред
рдЖрдк рдЕрд▓рд░реНрдЯ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдлрд╝реЛрдХрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ UIAccessibility.post(notification: тАж)
ред рдпрд╣ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рд▓реЗрддрд╛ рд╣реИ:- рдкреНрд░рдЬрд╛рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ
UIAccessibility.Notification
ред - рд╡рд╣ рд╡рд╕реНрддреБ рдЬрд┐рд╕ рдкрд░ рд╕рддрд░реНрдХрддрд╛ рд▓рд╛рдЧреВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░, рдпрд╣ рдкрд╛рда рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдзрд┐рд╕реВрдЪрдирд╛ рдХреЗ рдмрд╛рдж рдЪреБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЖрдк рд╣реЗрдбрд░ рдкрд░ viewDidLoad рдореЗрдВ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:override func viewDidLoad() {
super.viewDidLoad()
UIAccessibility.post(notification: .screenChanged,
argument: titleLabel);
}
рдЖрдк рдЙрд╕ рд╡рд╕реНрддреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕ рдкрд░ рдЖрдк рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдкрд╛рда рдХрд╛ рдЙрдЪреНрдЪрд╛рд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИредрд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдЕрд▓рд░реНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░
рджреЗрд╢реА рддрд░реАрдХреЗ рд╕реЗ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдПрдВ
рдЬрдм VoiceOver рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдХрд░реЗрдВрдЧреЗ) рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдЕрдиреБрдорддрд┐ рд╕рднреА рдЬрд╛рдо рд╢реВрдЯред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рд╕рдВрджреЗрд╢ рдлрд╝реАрдб рдХрд┐рдпрд╛ рдФрд░ рддрд╛рдХрд┐ рд╕рдВрджреЗрд╢ рдиреАрдЪреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛ, рд╣рдордиреЗ рдлреНрд▓рд┐рдк рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ UITableView
рдФрд░ рдлрд┐рд░ рд╕рднреА рдХреЛрд╢рд┐рдХрд╛рдУрдВ рдХреЛ рдлреНрд▓рд┐рдк рдХрд┐рдпрд╛ ред рдиреЗрддреНрд░рд╣реАрди, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реВрдЪреА VoiceOver рдореЗрдВ рддреАрди рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрд▓реНрдЯрд╛ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдЧреАредрд╣рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рднреА рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рд╣рдо рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЦрд┐рдбрд╝рдХреА рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдпрд╣ рдЗрд╕рд▓рд┐рдП рд╣реБрдЖ рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рджреГрд╢реНрдп рджрд┐рдЦрд╛рдпрд╛ рдерд╛, рди UIViewController
рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ UIPresentationController.
рд╡реЙрдЗрд╕рдУрд╡рд░ рдХреЗ рд╕рд╛рде, рдЬреЛ рдЗрд╕реЗ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реИ .firstResponder
, рдФрд░ рд╣рдорд╛рд░рд╛ view
рдирд╣реАрдВ рдерд╛ред
рдпрджрд┐ рдкреБрдирд░реНрд▓реЗрдЦрди рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕рдХреЗ view
рд▓рд┐рдП рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ accessibilityViewIsModal
ред рддрдм VoiceOver рдХреЗрд╡рд▓ рдЙрд╕реА рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧрд╛ view
редoverride var accessibilityViewIsModal: Bool {
get { return true }
set {}
}
рд╕рдЪ рдХрд╣реВрдВ, рддреЛ рдпрд╣ рдореЗрд░реЗ рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрднреА рдХрд╛рдо рдирд╣реАрдВ рдЖрдпрд╛ UIPresentationController.
рдЕрджреГрд╢реНрдп рдлреНрд░реЗрдореНрд╕ рд╕рдВрд░реЗрдЦрд┐рдд рдХрд░реЗрдВ
рд░реАрдбрд┐рдВрдЧ рдСрд░реНрдбрд░ рдХреЛ рдлреНрд░реЗрдо рджреНрд╡рд╛рд░рд╛ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдпрд╣ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП "i" рдмрдЯрди рдХреЗ рдлреНрд░реЗрдо рдХреЛ рдмрдбрд╝рд╛ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди рдпрд╣ рдкрд┐рдЬреНрдЬрд╛ рдирд╛рдо рдХреЗ рдлреНрд░реЗрдо рд╕реЗ рдКрдВрдЪрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдлреЛрдХрд╕ рдХрд╛ рдкрд╣рд▓рд╛ рддрддреНрд╡ "рдЖрдИ" рдмрдЯрди рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЫреЛрдЯрд╛ рд╣реИ, рдпрд╣ рджрд╛рдИрдВ рдУрд░ рд╣реИ рдФрд░ рдЖрдорддреМрд░ рдкрд░ рдЗрддрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИред
рдЖрдк рдкрдврд╝рдиреЗ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ accessibilityElements
, рд▓реЗрдХрд┐рди рдореИрдВ рдПрдХ рдЕрд▓рдЧ рддрд░реАрдХрд╛ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ред рд╡реЙрдЗрд╕рдУрд╡рд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ accessibilityFrame
, рдмрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рдлреНрд░реЗрдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ:- рдирд┐рдпрдВрддреНрд░рдг рдЙрдкрд╡рд░реНрдЧ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ рдФрд░ рдХрдо рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд▓реМрдЯрд╛рдПрдВред
- рдмрд╛рд╣рд░ рд╕рд╣реА рдлреНрд░реЗрдо рд╕реЗрдЯ рдХрд░реЗрдВред
- рдмрд╕ рдлреНрд░реЗрдо рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╢рд┐рд▓рд╛рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдлреНрд▓рд╢ рд╣реЛред
рд▓реЗрдХрд┐рди рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрд╣ рдлреНрд░реЗрдо рд╕реНрдХреНрд░реАрди рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдореЗрдВ рд╣реИред рд╕рд╛рдзрд╛рд░рдг рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ UIAccessibility.convertToScreenCoordinates
редрдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реНрд╡рд┐рдЪрд░ рдФрд░ рдЙрд╕рдХреЗ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рддрддреНрд╡ рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдЕрдирд╛рд╡рд╢реНрдпрдХ рджреЛрд╣рд░рд╛рд╡ рджреВрд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛редoverride func layoutSubviews() {
super.layoutSubviews()
repeatSwitch.accessibilityLabel = repeatLabel.text
repeatSwitch.accessibilityFrame = UIAccessibility.convertToScreenCoordinates(
repeatSwitch.frame.union(repeatLabel.frame).insetBy(dx: -12, dy: -12),
in: repeatSwitch.superview!)
}
рдореИрдВрдиреЗ рдлреЛрдХрд╕ рдХреЛ рднреА рдмрдбрд╝рд╛ рдмрдирд╛рдпрд╛ рд╣реИ .inset
, рдЗрд╕реЗ рдкреНрд░реЗрд╕ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред
рдлреНрд░реЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ AccessibilityContainer
рдЖрдк рдЧреНрд░рд╛рдл рдФрд░ рдЯреЗрдмрд▓ рдЙрдкрд▓рдмреНрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдореБрдЦреНрдп рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдХрд░реЗрдВ
рдпрд╣ UX рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрдХреЛ рд╡реИрд╕реЗ рднреА рдмрддрд╛рдКрдВрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐ рд╡рд╛рд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕реНрдХреНрд░реАрди рд╕реЗ рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЕрдВрдзреЗ рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕реЙрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЦрд░реАрджреЗрдВ рдмрдЯрди рдореЗрдВ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВредрдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдЦрд░реАрджреЗрдВ рдмрдЯрди" рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдмреЗрдХрди рдЬреЛрдбрд╝реЗрдВ, рдЬреИрд▓рд╛рдкреЗрдиреЛ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдореВрд▓реНрдп 434 write ┬╗, рдЖрдкрдХреЛ рдХреЛрдб рдореЗрдВ рдХреБрдЫ рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рд▓рд┐рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдЬреЛрдбрд╝рд╛ / рд╣рдЯрд╛рдП рдЧрдП рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрди рдПрдХрддреНрд░ рдХрд░реЗрдВ:accessibilityTraits = .button
accessibilityLabel = ""
accessibilityValue = " , . 434тВ╜"
рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рд╕рдВрдХреЗрддрдХ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ
рдпрджрд┐ рдХрд╛рд░реНрдЯ рдореЗрдВ рдЙрддреНрдкрд╛рдж рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбрд╛рдЙрдирд▓реЛрдб рдЗрдВрдбрд┐рдХреЗрдЯрд░ рдЙрдкрд▓рдмреНрдз рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ:- рд╕рдВрдХреЗрддрдХ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд▓рд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рдлреЛрдХрд╕ рдХреЛ рдПрдХ рдирд╛рдо рджреЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЛрдб рд╣реЛ рд░рд╣рд╛ рд╣реИред
- рд▓рдЧрд╛ рджреЛ
accessibilityViewIsModal
ред - рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЬрдм рдбрд╛рдЙрдирд▓реЛрдб рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдпрджрд┐ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдк рдПрдХ рдирдИ рд╕реНрдХреНрд░реАрди рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╡реЙрдпрд╕рдУрд╡рд░ рд╕реНрд╡рдпрдВ рдлреЛрдХрд╕ рдХреЛ рд╕реНрд╡рд┐рдЪ рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдбрд╛рдЙрдирд▓реЛрдб рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдХрдВрдкрди рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ редApple рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ?
рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╕рдлрд╛рд░реА рдЖрдИрдУрдПрд╕ 13 рдореЗрдВ рдЗрд╕рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: рдПрдХ рдкреЗрдЬ рд▓реЛрдб рдХреЗ рджреМрд░рд╛рди, рдпрд╣ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдХрдВрдб рдореЗрдВ рдПрдХ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рдПрдХ рдкреЗрдЬ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ рддреЛ рдпрд╣ * woop-dumb * рдХрд░рддрд╛ рд╣реИред рдХрд╛рд╢, рдЖрдкреА рдХреА рдУрд░ рд╕реЗ рдпрд╣ рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рд╣рдо iOS 14 рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рд╕реНрдХреНрд░реАрди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛: рд╣рдордиреЗ рдмрдЯрдиреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдлреЛрдХрд╕ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛, рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛, рдореБрдЦреНрдп рдмрдЯрди рдкрд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЖрд╡реЗрджрди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред рдпрд╣ рдЬреНрдЮрд╛рди рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЖрдЧреЗ рдмрдврд╝реЗрдВредрдЕрдЧрд▓реА рдмрд╛рд░ рдореИрдВ VoiceOver, рд╡реЙрдпрд╕ рдХрдВрдЯреНрд░реЛрд▓ рдФрд░ UI рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдБрдЧрд╛ред
рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рдбреЛрдбреЛ рдкрд┐рдЬреНрдЬрд╛ рдореЛрдмрд╛рдЗрд▓ рдЪреИрдирд▓ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВ ред