@ WWDC19
ํ๋ฅญํ ์์ฉ ํ๋ก๊ทธ๋จ์ ํน์ง > ๋ฐ์ด๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค
- ๋ง์ ์์ ํ ์คํธ๋ฅผ ์ฝ๋ ๊ฒ์ ์ด์ ์ ๋ ์ฑ์ ๊ฒฝ์ฐ ํ ์คํธ์ ๋ ์ด์์ ๋ฐ ์คํ์ผ๋ง์ด ํ์ํจ
- ์ฌ๊ธฐ์
Accessability
๋ฅผ ๋ํ๋ฉด ๋์ฑ ์ข์VoiceOver
์ ๋ํ ์ ๊ทผ์ฑ์ด ๋ฐ์ด๋ ์ฝ๊ธฐ ํ๊ฒฝ์ ๋ง๋๋ ๋ฐ ํ์ํ API ๋ฐ ๊ธฐ์ ์ ๋ํด ๋ฐฐ์๋๋ค. - VoiceOver ์ผ๊ธฐ
UIAccessibilityLocationDescriptor
ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ ํ ์คํธ ๋ด์ฉ์ ์ก์ธ์ค ํ ์ ์์ต๋๋ค.
public protocol UIAccessibilityReadingContent {
// ํฌ์ธํธ์ ๊ฒฝ์ฐ ์ง์ ๋ ํฐ์น ์์น์ ๋ํ ํ ๋ฒํธ๋ฅผ ๋ฐํํ๋๋ก ์์ฒญํฉ๋๋ค.
func accessibilityLineNumber(for point: CGPoint) -> Int
// forLineNumber๋ ํ
์คํธ ๋ด์ฉ์ ์์ฒญํ๊ณ ์ง์ ๋ ํ์ ๊ฐ๊ฐ ์์ฒญํฉ๋๋ค.
func accessibilityContent(forLineNumber lineNumber: Int) -> String?
// accessibility Frame์ด ์ด๋์ธ์ง ์๋ ค์ค๋๋ค.
func accessibilityFrame(forLineNumber lineNumber: Int) -> CGRect
// ๋ด์ฉ์ ์ ์ฒด ํ์ด์ง๋ฅผ return
func accessibilityPageContent() -> String?
}
- view ์ด๊ธฐํ์
isAccessibilityElement
๋ฅผtrue
๋ก ์ค์ ์ผ์ฃผ๊ธฐaccessibilityLineNumber(for point: CGPoint)
์์ view๋ฅผ ์ค๋ช ํ ์ ์๋ ๊ฐ์ ๋๊ฒจ์ค๋ค.accessibilityPageContent
๋ฌธ์์ด๋ค์ ๋ชจ์์ ๋๊ฒจ์ค๋ค.
โข ์๋ ํ์ด์ง ๋๊น์ ๊ตฌํํ๋ ค๋ฉด 2 ๊ฐ์ ์ ๊ทผ์ฑ API๋ฅผ ์ฑํํด์ผํฉ๋๋ค.
- vie์
causePageTurn
์ ๊ทผ์ฑ ํน์ฑ์ ํฌํจ์์ผ์ผํฉ๋๋ค. accessibilityScroll
๊ณผdirection
๋ฅผ ์ค์ ํด์ ์คํฌ๋กค ๋ฐฉํฅ์ ๊ตฌํํด์ผํฉ๋๋ค.
UIAccessibilityTraits.causesPageTurn
func accessibilityScroll(_ direction: UIAccessibilityScrollDirection) -> Bool
- VoiceOver๊ฐ ์ฑ์ ์ปจํ ์ธ ๋ฅผ ๋งํ๋ ๋ฐฉ์์ ์ ์ด ํ ์ ์์ต๋๋ค.
public protocol UIAccessibilityReadingContent {
func accessibilityAttributedContent(forLineNumber lineNumber: Int) -> NSAttributedString?
func accessibilityAttributedPageContent() -> NSAttributedString?
}
NSAttributedString(string: "Arc de Triomphe", attributes: [.accessibilitySpeechLanguage:
โfr-FRโ])
let label = NSMutableAttributedString(string: "Yosemite National Park")
let range = label.string.range(of: "Yosemite")!
label.addAttributes([.accessibilitySpeechIPANotation: "joสหsษmษชti"], range:NSRange(range, in:
label.string))