<!--
{
  "availability" : [
    "Xcode: 16.3.0 -",
    "iOS: 27.0.0 -",
    "iPadOS: 27.0.0 -",
    "macCatalyst: 27.0.0 -",
    "macOS: 27.0.0 -",
    "tvOS: 27.0.0 -",
    "visionOS: 27.0.0 -",
    "watchOS: 27.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "XCUIAutomation",
  "identifier" : "/documentation/XCUIAutomation/XCUIVoiceOverService",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "XCUIAutomation"
    ],
    "preciseIdentifier" : "c:objc(cs)XCUIVoiceOverService"
  },
  "title" : "XCUIVoiceOverService"
}
-->

# XCUIVoiceOverService

```
@MainActor class XCUIVoiceOverService
```

## Overview

Provides programmatic control of VoiceOver for UI testing.

Access this service through the @c voiceOverService property on @c XCUIDevice.

## Topics

### Classes

[`class Output`](/documentation/XCUIAutomation/XCUIVoiceOverService/Output)

### Structures

[`struct Error`](/documentation/XCUIAutomation/XCUIVoiceOverService/Error)

### Instance Properties

[`var debugDescription: String`](/documentation/XCUIAutomation/XCUIVoiceOverService/debugDescription)

Provides debugging information about the service.

[`var isEnabled: Bool`](/documentation/XCUIAutomation/XCUIVoiceOverService/isEnabled)

Whether VoiceOver is currently enabled.

### Instance Methods

[`func currentSpeech() throws -> XCUIVoiceOverService.Output`](/documentation/XCUIAutomation/XCUIVoiceOverService/currentSpeech())

Return the speech for the currently focused element.

[`func disable() throws`](/documentation/XCUIAutomation/XCUIVoiceOverService/disable())

Disable VoiceOver.

[`func enable() throws`](/documentation/XCUIAutomation/XCUIVoiceOverService/enable())

Enable VoiceOver.

[`func moveBackward() throws -> XCUIVoiceOverService.Output`](/documentation/XCUIAutomation/XCUIVoiceOverService/moveBackward())

Move VoiceOver to the previous element and return its speech.

[`func moveForward() throws -> XCUIVoiceOverService.Output`](/documentation/XCUIAutomation/XCUIVoiceOverService/moveForward())

Move VoiceOver to the next element and return its speech.

[`func moveIn() throws -> XCUIVoiceOverService.Output`](/documentation/XCUIAutomation/XCUIVoiceOverService/moveIn())

Move VoiceOver into the current container and return its speech.

[`func moveOut() throws -> XCUIVoiceOverService.Output`](/documentation/XCUIAutomation/XCUIVoiceOverService/moveOut())

Move VoiceOver out of the current container and return its speech.

## Relationships

### Conforms To

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`Equatable`](/documentation/Swift/Equatable)

[`CVarArg`](/documentation/Swift/CVarArg)

[`Hashable`](/documentation/Swift/Hashable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`Sendable`](/documentation/Swift/Sendable)

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)