VoiceOver: ano ito, mga kilos ng kontrol at kakayahan sa iOS

May-akda: IT Sectr Nai-publish: 2026-05-15 Oras ng pagbabasa: 8 min

VoiceOver — ay ang built-in na screen reader mula sa Apple na nagbibigay-boses sa bawat elemento ng interface at nagbibigay-daan sa iyo na kontrolin ang device gamit ang mga kilos. Ang teknolohiya ay naka-embed sa iOS, iPadOS at macOS sa antas ng system at hindi nangangailangan ng pag-install ng karagdagang software. Ayon sa Apple Accessibility (2025), ang VoiceOver ay sumusuporta sa higit sa 40 wika at ginagamit ng milyun-milyong bulag at may kapansanan sa paningin na gumagamit sa buong mundo.

Mga pangunahing punto

  • VoiceOver — built-in na screen reader sa iOS, iPadOS at macOS, kontrolado ng mga kilos at boses
  • Rotor ng VoiceOver nagpapalit ng mga mode ng nabigasyon: mga salita, karakter, heading, link
  • Mga kilos ay kinabibilangan ng pagpindot (pagbibigay-boses), pag-swipe (paglipat) at dobleng pagpindot (pag-activate)
  • Mga developer nagko-configure ng accessibility sa pamamagitan ng UIAccessibility at Accessibility Label
  • VoiceOver ay nagsasama sa dynamic na teksto at Braille display

Ano ang VoiceOver?

VoiceOver — ay isang screen reader na naka-embed sa mga operating system ng Apple. Ito ay dinisenyo para sa mga bulag at may kapansanan sa paningin na gumagamit at nagbibigay ng kumpletong pakikipag-ugnayan sa device nang walang visual na contact. Binibigyang-boses ng VoiceOver ang lahat ng elemento ng interface: mga button, link, teksto, larawan, notipikasyon at mga elemento ng system.

Ang teknolohiya ay unang ipinakilala noong 2005 para sa macOS, at sa iOS ay lumitaw kasama ng iPhone 3GS noong 2009. Mula noon, ang VoiceOver ay naging mahalagang bahagi ng Apple ecosystem at isa sa mga pangunahing argumento para sa accessibility ng platform. Ang VoiceOver ay naka-embed sa antas ng system — nangangahulugan ito na gumagana ito sa anumang application nang walang karagdagang pagsasama mula sa developer, bagaman ang kalidad ng pagbibigay-boses ay direktang nakadepende sa kung gaano kahusay ginagamit ng application ang accessibility API ng iOS.

Ang VoiceOver ay sumusuporta sa higit sa 40 wika na may natural na speech synthesis at umaangkop sa rehiyonal na mga setting ng boses. Sa iOS, ang VoiceOver ay gumagamit ng mga voice engine ng Siri para sa Tagalog at iba pang mga wika, na tinitiyak ang pinaka natural na tunog at tamang intonasyon depende sa bantas at konteksto.

Paano gumagana ang VoiceOver?

Ang VoiceOver ay humaharang sa mga kaganapan sa pagpindot at binibigyang-kahulugan ang mga ito nang iba kaysa sa karaniwang input ng iOS. Kapag hinawakan ng gumagamit ang screen, hindi ina-activate ng VoiceOver ang elemento sa ilalim ng daliri, ngunit binibigyan muna ito ng boses. Pagkatapos lamang ng dobleng pagpindot, ang elemento ay na-activate. Ito ang pangunahing pagkakaiba na nagpapahintulot sa mga bulag na gumagamit na galugarin ang interface nang walang panganib ng hindi sinasadyang pagpindot.

Pagkakasunod-sunod ng pagbasa at nabigasyon

Binabasa ng VoiceOver ang mga elemento ng interface sa lohikal na pagkakasunud-sunod: mula kaliwa pakanan, mula itaas pababa. Ang pagkakasunud-sunod ng pagbasa ay minana mula sa hierarchy ng view ng iOS, ngunit maaaring baguhin ito ng developer sa pamamagitan ng property na accessibilityElements para sa mga kumplikadong layout. Ang gumagamit ay maaaring mag-navigate sa pagitan ng mga elemento sa pamamagitan ng pag-swipe pakanan (susunod) at pakaliwa (nauna), pati na rin sa pamamagitan ng pagpindot sa isang partikular na elemento upang bigyan ito ng boses.

Sa bawat paglipat, binibigkas ng VoiceOver ang uri ng elemento (button, link, heading), ang pangalan nito (accessibilityLabel), ang katayuan (napili, hindi pinagana) at ang pahiwatig (accessibilityHint). Kung ang elemento ay naglalaman ng halaga — halimbawa, isang slider ng volume — binibigkas din ito ng VoiceOver. Accessibility Traits (UIAccessibilityTraits) ay nagbibigay din ng impormasyon sa gumagamit tungkol sa pag-uugali ng elemento: kung ito ay isang button, switch, paghahanap o key ng keyboard.

Rotor ng VoiceOver

Ang rotor — ay isang virtual na knob ng pagsasaayos na nagpapalit ng mode ng nabigasyon ng VoiceOver. Iniikot ng gumagamit ang rotor gamit ang dalawang daliri (tulad ng volume knob) at pinipili ang mode: mga salita, karakter, heading, link, entry point, row ng table at iba pa. Mode ng heading ay nagbibigay-daan sa mabilis na paglipat sa pagitan ng H1-H6 sa mga web page at application, at mode ng karakter — pagbigkas ng teksto ng bawat titik, na kapaki-pakinabang kapag pinupunan ang mga form o naglalagay ng mga confirmation code.

Ang developer ay maaaring magdagdag ng mga custom na mode sa rotor sa pamamagitan ng UIAccessibilityCustomRotor API. Halimbawa, sa isang notes application, maaaring magdagdag ng rotor na „Mga Paboritong Tala" o „Mga Kamakailang Pagbabago". Mga custom na rotor ay makabuluhang nagpapabilis ng nabigasyon sa mga partikular na application at itinuturing na pinakamahusay na kasanayan sa accessibility sa iOS.

Mga kilos ng kontrol ng VoiceOver

Ang VoiceOver ay gumagamit ng sarili nitong hanay ng mga kilos na hindi tumutugma sa karaniwang iOS na mga kilos. Karamihan sa mga kilos ay ginagawa gamit ang tatlong daliri sa halip na isa — pinipigilan nito ang mga salungatan sa normal na kontrol at pinapayagan ang VoiceOver na gumana nang sabay sa karaniwang input.

AksyonKilosResulta
Bigyang-boses ang elementoPagpindot ng 1 daliriBinibigkas ang pangalan ng elemento
I-activateDobleng pagpindotPagpindot ng button o link
Susunod na elementoSwipe pakananPaglipat sa susunod
Naunang elementoSwipe pakaliwaBumalik sa nauna
Pag-scroll3 daliri swipePag-scroll ng listahan o pahina
Rotor2 daliri pag-ikotPagbabago ng mode ng nabigasyon

Ang kilos na dobleng pagpindot ay ang pangunahing paraan ng pag-activate ng mga elemento sa VoiceOver. Kung ang elemento ay nangangailangan ng espesyal na aksyon (halimbawa, pag-drag), ang VoiceOver ay gumagamit ng pagkakasunod-sunod na „pagpindot — dobleng pagpindot at hawak" upang pumasok sa mode ng paglipat. Ito ay nagpapahintulot sa pagsasagawa ng mga kumplikadong kilos tulad ng drag-and-drop nang hindi nakikita ang screen. Ang VoiceOver ay sumusuporta rin sa kilos na „dobleng pagpindot gamit ang dalawang daliri" upang kanselahin ang aksyon at „tripleng pagpindot" upang i-on/i-off ang screen curtain.

VoiceOver sa mobile development

Ang developer ng iOS application ay maaaring makabuluhang mapabuti ang pakikipag-ugnayan sa VoiceOver sa pamamagitan ng UIAccessibility API. Ang mga pangunahing setting ng accessibility ay idinaragdag sa Interface Builder (Identity Inspector → Accessibility), ngunit para sa mga kumplikadong interface, kinakailangan ang programmatic configuration sa code.

Accessibility Label at Traits

Ang property na accessibilityLabel ay nagtatakda ng teksto na bibigkasin ng VoiceOver para sa elemento. Kung ang label ay hindi nakatakda, ginagamit ng VoiceOver ang teksto ng button o placeholder ng text field. Para sa mga elementong walang teksto (mga icon, custom na view), ang label ay sapilitan. Ang property na accessibilityTraits ay tumutukoy sa uri ng elemento: button, heading, switch, paghahanap, key ng keyboard, nagbabagong halaga, link at iba pa.

swift
let profileButton = UIButton(type: .custom)
profileButton.setImage(UIImage(named: "avatar"), for: .normal)
profileButton.isAccessibilityElement = true
profileButton.accessibilityLabel = "Profile ng gumagamit"
profileButton.accessibilityTraits = .button
profileButton.accessibilityHint = "Binubuksan ang screen ng mga setting ng profile"

Ang flag na isAccessibilityElement ay nag-a-activate ng suporta sa VoiceOver para sa mga custom na view — bilang default ito ay true lamang para sa mga karaniwang elemento (UIButton, UILabel, UITextField). Ang parameter na accessibilityHint ay nagdaragdag ng pahiwatig: binibigkas ito ng VoiceOver pagkatapos ng pause kung ang gumagamit ay huminto sa isang elemento. Ang Hint ay dapat ilarawan ang resulta ng aksyon, hindi ang instruksyon: „Binubuksan ang screen ng mga setting" sa halip na „Pindutin upang buksan".

Pag-grupo at pagkakasunod-sunod ng mga elemento

Para sa mga kumplikadong screen kung saan ang lohikal na grupo ng mga elemento ay hindi tumutugma sa visual na pagkakasunod-sunod, ginagamit ang accessibilityElements — isang array na nagtatakda ng pagkakasunod-sunod ng pagbasa. Halimbawa, ang isang product card ay naglalaman ng larawan, pangalan, presyo at button na „Sa Cart". Kung ang mga elementong ito ay random na nakalagay sa hierarchy ng view, ang accessibilityElements ay nagtatakda ng tamang pagkakasunod-sunod para sa VoiceOver.

swift
let productCard = UIView()
let productImage = UIImageView()
let productName = UILabel()
let productPrice = UILabel()
let addToCartButton = UIButton()

productCard.accessibilityElements = [
    productImage, productName, productPrice, addToCartButton
]

Para sa pagsasama-sama ng maraming elemento sa isang accessible na elemento, ginagamit ang UIAccessibilityContainer o accessibilityFrame para i-override ang lugar ng pagpindot. Ito ay kapaki-pakinabang kapag ang isang table cell ay naglalaman ng maraming UI component, ngunit lohikal na kumakatawan sa isang elemento — dapat bigyang-boses ng VoiceOver ang buong cell bilang isang buo, hindi hiwalay na tatahakin ang nilalaman nito.

Pag-set up ng accessibility para sa VoiceOver

Ang tamang configuration ng accessibility para sa VoiceOver ay nangangailangan ng pansin sa ilang aspeto: semantic markup, dynamic na pag-update, paghawak ng mga custom na elemento at pagsubok gamit ang totoong screen reader.

Semantic markup sa SwiftUI

Sa SwiftUI, ang accessibility ay nako-configure sa pamamagitan ng mga modifier na .accessibilityLabel(), .accessibilityValue(), .accessibilityHint() at .accessibilityAddTraits(). Ang SwiftUI ay awtomatikong nagmamana ng accessibility mula sa mga karaniwang elemento, ngunit para sa mga custom na component, kinakailangan ang explicit na configuration. Halimbawa, ang isang custom na slider ay dapat magpaalam sa VoiceOver tungkol sa halaga at format ng pagbabago nito.

swift
Slider(value: $volume, in: 0...100)
    .accessibilityLabel("Volume ng tunog")
    .accessibilityValue(
        Text("\(Int(volume)) porsyento")
    )
    .accessibilityAddTraits(.adjustsAudioForAccessibility)
    .accessibilityAdjustableAction { direction in
        switch direction {
        case .increment: volume = min(volume + 5, 100)
        case .decrement: volume = max(volume - 5, 0)
        }
    }

Ang modifier na accessibilityAdjustableAction ay nagdaragdag ng kakayahang baguhin ang halaga gamit ang VoiceOver na mga kilos: swipe pataas — dagdagan, swipe pababa — bawasan. Kung wala ang modifier na ito, ang slider ay mananatiling hindi naa-access para sa kontrol sa pamamagitan ng screen reader. Ang isang katulad na configuration ay kinakailangan para sa mga custom na stepper, picker at iba pang elemento na nagbabago ng kanilang halaga.

Dynamic na pag-update at mga notipikasyon

Kapag ang nilalaman sa screen ay dynamic na nagbabago (may lumitaw na notipikasyon, na-update ang status ng pag-load, nagbago ang presyo), ang VoiceOver ay dapat makatanggap ng notipikasyon sa pamamagitan ng UIAccessibility.post. Kung wala ang tawag na ito, hindi malalaman ng screen reader ang mga pagbabago at makaligtaan ng gumagamit ang mahalagang impormasyon. Para sa SwiftUI, ginagamit ang modifier na .accessibilityAnnouncement().

swift
UIAccessibility.post(
    notification: .announcement,
    argument: "Bumaba ang presyo ng 20 porsyento"
)

// SwiftUI
Text("Na-update ang presyo")
    .accessibilityAnnouncement(Text("20% diskwento"))

Ang mga notipikasyon ng VoiceOver ay dapat gamitin nang matalino: ang labis na mga anunsyo ay nakakairita sa gumagamit, at ang kanilang kawalan ay ginagawang hindi naa-access ang application. Ang pinakamainam na estratehiya — anunsyahin lamang ang mga pagbabagong nakakaapekto sa kasalukuyang workflow ng gumagamit: pag-update ng cart, status ng pag-load, error sa pag-validate ng form, notipikasyon ng chat. Mga pagbabago sa background (oras sa bar, halaga ng palitan) ay hindi nangangailangan ng anunsyo — susuriin sila ng gumagamit mismo kung kinakailangan.

Ang pagsubok ng VoiceOver ay isinasagawa sa pamamagitan ng isang physical na device na may naka-activate na screen reader o iOS simulator na may opsyong Accessibility Inspector. Mahalagang subukan ang mga buong senaryo ng paggamit: nang walang visual na kontrol ay dumaan sa pagpaparehistro, mag-order, maghanap ng produkto sa pamamagitan ng paghahanap. Kung ang ruta ay madaanan nang walang visual na feedback — ang VoiceOver ay naka-configure nang tama.

Mga madalas itanong

Paano i-on ang VoiceOver sa iPhone?

Mga Setting → Accessibility → VoiceOver. I-on ang switch. Para sa mabilis na pag-activate, gamitin ang triple press ng side button (sa iPhone X at mas bago) o ang Home button. Maaari ring i-on ng Siri ang VoiceOver gamit ang utos na „I-on ang VoiceOver".

Ano ang pagkakaiba ng VoiceOver sa TalkBack?

VoiceOver — Apple screen reader para sa iOS, TalkBack — Google screen reader para sa Android. Ang prinsipyo ng pagtatrabaho ay pareho: ang pagpindot ay nagbibigay-boses, ang dobleng pagpindot ay nag-a-activate. Ang pagkakaiba ay nasa mga kilos, setting ng rotor at pagsasama ng ecosystem: ang VoiceOver ay mas malalim na naka-integrate sa iCloud at Apple Pay.

Paano i-configure ang VoiceOver para sa aking application?

Gamitin ang UIAccessibility API: itakda ang accessibilityLabel para sa lahat ng elemento, accessibilityTraits para sa uri ng elemento at accessibilityHint para sa mga pahiwatig. Sa SwiftUI, gamitin ang mga modifier na .accessibilityLabel() at .accessibilityAddTraits(). Subukan ang application na may naka-activate na VoiceOver.

Ano ang rotor sa VoiceOver?

Ang rotor — ay isang mode ng nabigasyon na binabago sa pamamagitan ng pag-ikot ng dalawang daliri. Tinutukoy nito kung paano gumalaw sa pagitan ng mga elemento: ayon sa mga heading, karakter, salita, link o entry point. Mga developer ay maaaring magdagdag ng kanilang sariling mga mode sa pamamagitan ng UIAccessibilityCustomRotor.

Bakit hindi binabasa ng VoiceOver ang aking custom na elemento?

Para sa mga custom na UIView, kailangan mong itakda ang isAccessibilityElement = true at tukuyin ang accessibilityLabel. Kung ang elemento ay binubuo ng maraming child view, gamitin ang accessibilityElements upang itakda ang pagkakasunod-sunod ng pagbasa o pagsamahin ang mga ito sa isang container.

Buod

  • VoiceOver — built-in na Apple screen reader para sa iOS, iPadOS at macOS na may voice at gesture control
  • Rotor nagpapalit ng mga mode ng nabigasyon: heading, karakter, salita, link at custom na mode
  • Mga kilos VoiceOver: pagpindot — pagbibigay-boses, dobleng pagpindot — pag-activate, swipe — nabigasyon
  • Pag-develop sa pamamagitan ng UIAccessibility API: label, traits, hint, custom na rotor at dynamic na notipikasyon
  • SwiftUI ay nagbibigay ng mga modifier na .accessibilityLabel(), .accessibilityAddTraits() at .accessibilityAdjustableAction()
  • Dynamic na pag-update ay nangangailangan ng tawag na UIAccessibility.post upang maipaalam sa VoiceOver
  • Pagsubok ay sapilitan sa isang tunay na device na may naka-activate na VoiceOver nang walang visual na kontrol

Gagawa kami ng mobile application na turnkey

Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.

Pag-usapan ang proyekto

Basahin din