Screen Reader: шта је то, врсте екранских читача и принцип рада

Аутор: IT Sectr Објављено: 2026-05-15 Време читања: 10 мин

Screen Reader (екрански читач) — програм који претвара текст и графичке елементе интерфејса у говор или излаз на Брајевом дисплеју, омогућавајући слепим и слабовидим корисницима да интерагују са уређајем без визуелне контроле. На мобилним платформама главни екрански читачи су VoiceOver на iOS-у и TalkBack на Android-у. Према подацима Светске здравствене организације (2023), Screen Reader је основни алат за приступ дигиталним технологијама за 285 милиона људи са оштећењем вида у свету.

Главно

  • Screen Reader — програм за читање екрана, претвара интерфејс у говор или Брајево писмо за слепе кориснике
  • VoiceOver — екрански читач за iOS са управљањем покретима и ротором навигације
  • TalkBack — екрански читач за Android у оквиру Accessibility Suite са фокусом приступачности
  • Принцип рада заснован на стаблу приступачности (Accessibility Tree) које се гради од свих View-ова на екрану
  • Програмери подешавају интеракцију путем contentDescription и accessibilityLabel

Шта је Screen Reader?

Screen Reader (екрански читач) — је асистивна технологија (Assistive Technology, AT) која тумачи графички кориснички интерфејс и представља га у невизуелном облику: путем синтетизованог говора или тактилног Брајевог дисплеја. Екрански читачи су основни начин приступа рачунарима и мобилним уређајима за особе са потпуним или делимичним губитком вида.

Први екрански читачи појавили су се крајем 1980-их за MS-DOS (нпр. Vocal-Eyes) и касније за Windows (JAWS, NVDA). На мобилним платформама, екрански читачи су почели да се уграђују на системском нивоу: Apple је интегрисао VoiceOver у iPhone 3GS 2009. године, Google — TalkBack у Android 1.6 исте године. До 2025. године готово сви модерни паметни телефони имају уграђени екрански читач који не захтева инсталацију додатног софтвера.

Screen Reader не само да чита текст са екрана — он анализира хијерархију интерфејса, одређује типове елемената (дугме, линк, наслов, поље за унос), њихово стање (укључено/искључено, изабрано/није изабрано) и међусобне везе (родитељ-дете, група). Ова информација се преноси кориснику путем гласовних упутстава или тактилних сензација Брајевог дисплеја, који ажурира ћелије у реалном времену у складу са положајем фокуса.

Како ради Screen Reader?

Screen Reader ради у тесној вези са оперативним системом, добијајући приступ његовом унутрашњем приказу интерфејса — стаблу приступачности (Accessibility Tree). Овај механизам је исти на iOS-у и Android-у, иако се називи API-ја разликују.

Претварање текста у говор (TTS)

Главни излазни канал екранског читача је синтезатор говора (Text-To-Speech, TTS). Када фокус приступачности дође до елемента, екрански читач извлачи његов текстуални садржај (или опис који је поставио програмер) и шаље га TTS мотору. Модерни TTS мотори, попут Apple Speech Synthesis и Google Text-to-Speech, користе неуронске мреже за генерисање природног говора са правилном интонацијом, паузама и акцентима у зависности од интерпункције и типа садржаја.

Корисник може подесити брзину говора (обично 60–80% од максималне за удобну перцепцију), висину тона и јачину звука. Неки екрански читачи подржавају више гласова и пребацивање између њих у зависности од типа садржаја — на пример, спорији глас за читање текста и брзи за навигацију кроз интерфејс. Брајеви дисплеји се повезују преко Bluetooth-а и приказују до 40–80 знакова истовремено, ажурирајући ред при свакој промени фокуса.

Управљање фокусом и навигација

Екрански читач користи концепт фокуса приступачности (Accessibility Focus), који се разликује од стандардног фокуса уноса. Корисник помера фокус приступачности помоћу покрета (додир, превлачење), а екрански читач изговара елемент под фокусом. Редослед навигације подразумевано прати визуелни редослед: слева надесно, одозго надоле. Програмер може преиначити овај редослед за сложене распореде.

Екрански читач такође подржава различите режиме навигације, које корисник пребацује путем ротора (VoiceOver) или менија (TalkBack): по насловима, линковима, знацима, речима, обрасцима. У режиму наслова, екрански читач се креће само између H1-H6 — ово је критично важно за ефикасну навигацију кроз дугачке странице и документе. Режим знакова помаже при уносу кодова за потврду или сложених лозинки, изговарајући сваки знак појединачно.

Главни екрански читачи за мобилне платформе

На мобилним платформама доминирају два екранска читача: VoiceOver на iOS-у и TalkBack на Android-у. Они имају различите API-је, покрете и могућности, али заједнички принцип рада — читање стабла приступачности и управљање покретима.

VoiceOver (iOS)

VoiceOver — екрански читач од Apple-а, уграђен у iOS, iPadOS и macOS. Користи API UIAccessibility за добијање информација о елементима и подржава ротор за пребацивање режима навигације. VoiceOver је интегрисан са iCloud-ом (подешавања се синхронизују између уређаја), Apple Pay-ем (потврда плаћања путем Touch ID или Face ID) и динамичким текстом (фонт се прилагођава корисничким подешавањима).

Покрети VoiceOver-а се разликују од TalkBack-а: користи се ротација са два прста (ротор), троструки додир за Screen Curtain и двоструки додир са два прста за отказивање радње. VoiceOver подржава прилагођене роторе, које програмер додаје путем UIAccessibilityCustomRotor — на пример, за брзу навигацију кроз делове апликације заобилазећи стандардни редослед.

TalkBack (Android)

TalkBack — екрански читач од Google-а, део Android Accessibility Suite-а. Користи AccessibilityService и AccessibilityNodeInfo за приступ интерфејсу. TalkBack подржава глобални мени путем L-обликованог превлачења, прилагођене радње за елементе и LiveRegion за динамичка ажурирања. Почевши од Android 14, TalkBack је добио подршку за покрете једном руком и побољшану интеграцију са Google Assistant-ом.

TalkBack има флексибилнији систем покрета од VoiceOver-а: корисник може подесити готово сваки покрет за било коју радњу. TalkBack такође подржава Брајев унос на екрану (BrailleBack) — корисник уноси текст Брајевим знацима директно на екрану осетљивом на додир у посебном распореду 3×2 за сваки прст, што значајно убрзава куцање у поређењу са екранском тастатуром.

КарактеристикаVoiceOver (iOS)TalkBack (Android)
APIUIAccessibilityAccessibilityService
НавигацијаРотор (2 прста)Глобални мени (L-превлачење)
Језици40+30+
Прилагођене радњеUIAccessibilityCustomRotorAccessibilityDelegate
Брајево писмоСпољни дисплејиBrailleBack + спољни
Динамичка ажурирањаUIAccessibility.postaccessibilityLiveRegion

Поред VoiceOver-а и TalkBack-а, постоје мање распрострањени мобилни екрански читачи: Select to Speak (Android, изговарање изабране области), Samsung Voice Assistant (замена за TalkBack на Samsung уређајима са One UI) и решења трећих страна за специфичне нише — на пример, за кориснике кинеских паметних телефона без Google услуга.

Како Screen Reader комуницира са апликацијом

Screen Reader нема директан приступ UI компонентама апликације. Уместо тога, ради кроз међуслој — API приступачности оперативног система. Оперативни систем гради стабло приступачности (Accessibility Tree), које екрански читач обилази и анализира.

Accessibility Tree на iOS-у и Android-у

На iOS-у, стабло приступачности се гради од објеката UIAccessibilityElement, који одговарају сваком View-у на екрану. Сваки елемент садржи label (главни текст), traits (тип елемента: дугме, наслов, линк), hint (упутство), value (тренутна вредност за клизаче и показиваче) и frame (област додира). Систем аутоматски креира елементе за стандардне UI компоненте, али програмер може додавати и подешавати их.

На Android-у, стабло приступачности се гради од објеката AccessibilityNodeInfo. Сваки чвор садржи: text (текст или contentDescription), className (тип елемента), contentDescription (опис), stateDescription (стање), isEnabled, isChecked, isClickable и друге заставице. Android такође подржава AccessibilityAction — листу радњи које екрански читач може извршити у име корисника: клик, дуг притисак, померање, постављање фокуса, постављање текста.

Догађаји приступачности (Accessibility Events)

Када дође до промене у интерфејсу (појавио се нови елемент, променио се текст, елемент је постао видљив или невидљив), оперативни систем шаље AccessibilityEvent. Екрански читач је претплаћен на ове догађаје и реагује на њих: на пример, када се појави дијалошки прозор, екрански читач аутоматски помера фокус на његов наслов и изговара садржај.

kotlin
// Ослушкивање догађаја приступачности на Android-у
class CustomAccessibilityService : AccessibilityService() {
    override fun onAccessibilityEvent(event: AccessibilityEvent?) {
        event ?: return
        when (event.eventType) {
            TYPE_VIEW_CLICKED ->
                handleClick(event)
            TYPE_WINDOW_STATE_CHANGED ->
                handleWindowChange(event)
            TYPE_VIEW_TEXT_CHANGED ->
                handleTextChange(event)
        }
    }
}

На iOS-у, слични догађаји се обрађују путем UIAccessibility.Notification: layoutChanged (променио се распоред), screenChanged (потпуно нови екран), announcement (произвољна објава), pageScrolled (померање странице). Програмер шаље ове догађаје путем UIAccessibility.post како би екрански читач правилно реаговао на промене. На пример, при отварању модалног прозора потребно је послати screenChanged са новим насловом — иначе ће VoiceOver остати на претходном елементу испод прозора.

Развој апликација узимајући у обзир Screen Reader

Стварање приступачне апликације није само додавање contentDescription сваком елементу, већ промишљање корисничког искуства за невизуелну интеракцију. Основна правила су заједничка за обе платформе, иако се имплементација разликује.

Основна правила приступачности

Сви интерактивни елементи морају имати смислен опис: дугме „Пошаљи" треба да буде описано као „Пошаљи поруку", а не „Дугме". Декоративни елементи (раздвајачи, позадинске слике, иконе без функционалности) треба да буду скривени од екранског читача. Редослед навигације треба да одговара логичком току екрана, а не визуелном распореду. Контраст текста треба да буде најмање 4.5:1 за основни текст и 3:1 за велики текст (WCAG AA).

swift
// iOS: правилно подешавање сложеног елемента
let customControl = UIControl()
customControl.isAccessibilityElement = true
customControl.accessibilityLabel = "Јачина звука"
customControl.accessibilityValue = "75 процената"
customControl.accessibilityTraits = [
    .adjustable,
    .button
]
customControl.accessibilityHint =
    "Повећава или смањује јачину звука"

// Ажурирање при промени вредности
func didChangeVolume(newValue: Float) {
    customControl.accessibilityValue =
        "\(Int(newValue)) процената"
    UIAccessibility.post(
        notification: .layoutChanged,
        argument: customControl
    )
}

На iOS-у, заставица isAccessibilityElement укључује подршку за VoiceOver за прилагођене елементе. Комбинација traits (.adjustable + .button) обавештава VoiceOver да се елемент може подешавати превлачењем горе/доле и активирати двоструким додиром. Након промене вредности обавезно се шаље обавештење layoutChanged — иначе ће VoiceOver наставити да изговара стару вредност.

Специфичне препоруке за обе платформе

За iOS: користите accessibilityElements за преиначење редоследа читања, accessibilityCustomActions за додатне радње у контекстуалном менију и shouldGroupAccessibilityChildren за груписање елемената у логичке групе. За SwiftUI примењујте модификаторе .accessibilityLabel(), .accessibilityAddTraits() и .accessibilityRespondsToUserInteraction(). Избегавајте коришћење isAccessibilityElement = false на контејнерима који садрже интерактивне елементе потомке — то ће их сакрити од VoiceOver-а.

За Android: користите accessibilityTraversalBefore и accessibilityTraversalAfter за редослед навигације, AccessibilityDelegate за прилагођене елементе и LiveRegion (polite/assertive) за динамичка ажурирања. У Compose-у примењујте модификатор .semantics {} са contentDescription, stateDescription и customActions. Избегавајте коришћење focusable = true на неинтерактивним елементима — то ће створити лажне фокусне тачке за TalkBack и збунити корисника.

Алати за тестирање

Тестирање са екранским читачем је обавезно на физичком уређају. Емулатор/симулатор даје основну представу, али се покрети и брзина одзива разликују. Користите Accessibility Inspector (Xcode) за iOS и Accessibility Scanner за Android за аутоматско проналажење проблема.

Основни сценарији тестирања: регистрација (попуњавање обрасца, валидација, слање), претрага и навигација кроз каталог, наручивање, опоравак лозинке. Сваки сценариј мора бити изводљив без визуелне контроле — само помоћу гласовних упутстава екранског читача. Ако корисник екранског читача не може да заврши сценариј у истом времену као обичан корисник (±50%), — апликација захтева дораду приступачности.

Често постављана питања

Шта је Screen Reader једноставним речима?

То је програм који изговара све што се дешава на екрану паметног телефона: текст, дугмад, обавештења. Корисник управља уређајем покретима — додирује елемент да чује његов назив и двапут додирује да га активира. Screen Reader замењује вид гласом.

Који екрански читачи се користе на мобилним уређајима?

На iOS-у — VoiceOver (уграђени системски екрански читач од Apple-а). На Android-у — TalkBack (део Android Accessibility Suite-а од Google-а). Оба подржавају управљање покретима, гласовну повратну информацију и Брајеве дисплеје преко Bluetooth-а.

Како програмер може учинити апликацију компатибилном са Screen Reader-ом?

Поставите contentDescription (Android) или accessibilityLabel (iOS) за све интерактивне елементе. Сакријте декоративне елементе од екранског читача. Шаљите обавештења при динамичким променама. Тестирајте са укљученим екранским читачем на физичком уређају без визуелне контроле.

Која је разлика између VoiceOver-а и TalkBack-а?

Главна разлика је у API-ју и покретима. VoiceOver користи UIAccessibility на iOS-у и ротор за навигацију (ротација са два прста). TalkBack користи AccessibilityService на Android-у и глобални мени путем L-обликованог превлачења. Принцип рада — обилазак стабла приступачности — је исти.

Како Screen Reader чита слике?

Screen Reader не може „видети" слику. Он чита текстуални опис који програмер поставља путем contentDescription (Android) или accessibilityLabel (iOS). Ако опис није постављен, екрански читач може прочитати име датотеке или једноставно рећи „слика" — што је бескорисно за корисника.

Закључак

  • Screen Reader — асистивна технологија која претвара интерфејс у говор или Брајево писмо за слепе кориснике
  • VoiceOver (iOS) и TalkBack (Android) — главни мобилни екрански читачи са сопственим API-јима и покретима
  • Принцип рада заснован на стаблу приступачности (Accessibility Tree) и фокусу приступачности
  • Програмери подешавају интеракцију путем contentDescription, accessibilityLabel и управљања фокусом
  • Динамичка ажурирања захтевају слање догађаја приступачности: UIAccessibility.post на iOS-у, LiveRegion на Android-у
  • Тестирање обавезно на физичком уређају са укљученим екранским читачем и угашеним екраном
  • Приступачност — није опција, већ неопходност за 285 милиона корисника са оштећењем вида у свету

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође