Skip to main content
.accessibilityRemoveTraits(traits: AccessibilityTraits | AccessibilityTraits[]): Component;

Parameters

traits
AccessibilityTraits | AccessibilityTraits[]
The accessibility traits to remove from this view. Can be a single trait or an array of traits.

Support

Usage

Remove button behavior from disabled element

Button("Disabled Action", () => {})
    .disabled(true)
    .accessibilityRemoveTraits("isButton")

Remove selection from deselected item

HStack([
    Text("Item"),
    if (isSelected) {
        Image("checkmark")
    }
]).accessibilityAddTraits(isSelected ? "isSelected" : [])
  .accessibilityRemoveTraits(isSelected ? [] : "isSelected")

Static image without interaction

Image("decoration.png")
    .accessibilityRemoveTraits(["isButton", "allowsDirectInteraction"])
    .accessibilityHidden() // Completely hide decorative images

Temporarily disable traits

const [inputText, setInputText] = useState("")

TextField({ placeholder: "Input", text: inputText, setText: setInputText })
    .accessibilityAddTraits(isSearchMode ? "isSearchField" : [])
    .accessibilityRemoveTraits(isSearchMode ? [] : "isSearchField")

Remove multiple traits

VStack([
    Text("Static content"),
    Text("No longer interactive")
]).accessibilityRemoveTraits(["isButton", "isSelected", "allowsDirectInteraction"])

Conditional trait management

Text("Dynamic element")
    .accessibilityAddTraits(canInteract ? "isButton" : "isStaticText")
    .accessibilityRemoveTraits(canInteract ? "isStaticText" : "isButton")
    .onTapGesture(canInteract ? {
        handleTap()
    } : nil)

Override default traits

// Button that shouldn't sound like a button
Button("Silent Action", () => {})
    .accessibilityRemoveTraits("playsSound")

Clean trait state

VStack([
    Text("Reset element")
]).accessibilityAddTraits("isButton") // Add new behavior
  .accessibilityRemoveTraits(["isStaticText", "isHeader"]) // Remove old traits