<!--
{
  "availability" : [
    "iOS: 7.0.0 -",
    "iPadOS: 7.0.0 -",
    "macCatalyst: 13.1.0 -",
    "macOS: 10.9.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "GameController",
  "identifier" : "/documentation/GameController/GCControllerElement",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "Game Controller"
    ],
    "preciseIdentifier" : "c:objc(cs)GCControllerElement"
  },
  "title" : "GCControllerElement"
}
-->

# GCControllerElement

An input for a physical control, such as a button or thumbstick.

```
class GCControllerElement
```

## Overview

`GCControllerElement` is an abstract superclass for specific types of elements that represent controls on a game controller. Use the respective subclasses to either get the input of an element directly or set a handler that the element calls when the user changes a value. This class provides support for common features.

For complex elements that have subelements, you can get the containing element using the [`collection`](/documentation/GameController/GCControllerElement/collection) property. For example, a direction pad ([`GCControllerDirectionPad`](/documentation/GameController/GCControllerDirectionPad)) has two axis control and four button subelements.

If the user binds a controller element to a system gesture, the system sends the input to the system gesture recognizer first. If it doesn’t recognize a gesture, the system sends the input to your app but with a delay. If it does recognize a gesture, it doesn’t send any input to your app.

To change this default behavior, you can set the [`preferredSystemGestureState`](/documentation/GameController/GCControllerElement/preferredSystemGestureState) property to [`GCControllerElement.SystemGestureState.alwaysReceive`](/documentation/GameController/GCControllerElement/SystemGestureState/alwaysReceive) to receive the input simultaneously without delay. Alternatively, set it to [`GCControllerElement.SystemGestureState.disabled`](/documentation/GameController/GCControllerElement/SystemGestureState/disabled) to disable the system gesture and receive the input exclusively. Use the [`isBoundToSystemGesture`](/documentation/GameController/GCControllerElement/isBoundToSystemGesture) property to check whether the user included an element in a system gesture.

Use the [`isAnalog`](/documentation/GameController/GCControllerElement/isAnalog) property to determine whether an element’s input value is a range of values or a discrete digital value.

## Topics

### Accessing input values

[`isAnalog`](/documentation/GameController/GCControllerElement/isAnalog)

A Boolean value that indicates whether the element provides analog data.

### Getting a localized name

[`localizedName`](/documentation/GameController/GCControllerElement/localizedName)

The localized name for the element or the remapped element.

[`unmappedLocalizedName`](/documentation/GameController/GCControllerElement/unmappedLocalizedName)

The element’s localized name, not the remapped name.

### Displaying a symbol

[`sfSymbolsName`](/documentation/GameController/GCControllerElement/sfSymbolsName)

A system symbol for the element or the remapped element.

[`unmappedSfSymbolsName`](/documentation/GameController/GCControllerElement/unmappedSfSymbolsName)

The element’s system symbol, not the remapped symbol.

### Accessing elements by key

[`aliases`](/documentation/GameController/GCControllerElement/aliases)

The element’s aliases you use when accessing it with the subscript notation.

### Getting the containing element

[`collection`](/documentation/GameController/GCControllerElement/collection)

The enclosing element for this element.

### Handling system gesture input

[`isBoundToSystemGesture`](/documentation/GameController/GCControllerElement/isBoundToSystemGesture)

A Boolean value that indicates whether the user binds the element to a system gesture.

[`preferredSystemGestureState`](/documentation/GameController/GCControllerElement/preferredSystemGestureState)

The preferred state for handling input when the user binds the element to a system gesture.

[`GCControllerElement.SystemGestureState`](/documentation/GameController/GCControllerElement/SystemGestureState)

A state for handling input when an element is part of a system gesture.



---

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)