<!--
{
  "availability" : [

  ],
  "documentType" : "symbol",
  "framework" : "TouchController",
  "identifier" : "/documentation/TouchController",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "Touch Controller"
    ],
    "preciseIdentifier" : "TouchController"
  },
  "title" : "Touch Controller"
}
-->

# Touch Controller

Integrate onscreen touch controls into your Metal-based games.

## Overview

Use Touch Controller to add custom and interactive touch controls for your games.
The framework offers a suite of controls that enable support for a variety of
control schemes, like buttons, directional pads, thumbsticks, throttle controls,
and touchpads. The Game Controller framework supports each control and surfaces
them through a <doc://com.apple.documentation/documentation/GameController/GCController>
instance.

Use the [`TCTouchController`](/documentation/TouchController/TCTouchController) class as the central point to manage and render
your touch controls. To configure the appearance of your controls, use [`TCControlContents`](/documentation/TouchController/TCControlContents) and
[`TCControlImage`](/documentation/TouchController/TCControlImage). Use [`TCControlContents`](/documentation/TouchController/TCControlContents) to create a consistent look and
feel with system-provided assets.

## Topics

### Essentials

[`TCTouchController`](/documentation/TouchController/TCTouchController)

An object that allows you to create and customize on-screen touch controls for a game that uses Metal.

### Controls

[`TCControl`](/documentation/TouchController/TCControl)

A protocol that defines the base properties and methods for all touch controls.

[`TCButton`](/documentation/TouchController/TCButton)

A control that represents a single on-screen button.

[`TCDirectionPad`](/documentation/TouchController/TCDirectionPad)

An object that represents a direction pad.

[`TCSwitch`](/documentation/TouchController/TCSwitch)

A control that represents a single on-screen switch.

[`TCThumbstick`](/documentation/TouchController/TCThumbstick)

Represents a single on-screen thumbstick.

[`TCThrottle`](/documentation/TouchController/TCThrottle)

Represents a single on-screen throttle - a one axis input.

[`TCTouchpad`](/documentation/TouchController/TCTouchpad)

Represents a single on-screen touchpad that reports absolute coordinates or delta movements.

### Visuals

[`TCControlContents`](/documentation/TouchController/TCControlContents)

Represents the visual contents of a touch control.

[`TCControlImage`](/documentation/TouchController/TCControlImage)

Represents an image to be rendered using Metal.

[`TCControlLayout`](/documentation/TouchController/TCControlLayout)

A protocol defining the controlLayout properties for a control.

### System content

[`TCControlContents.ButtonShape`](/documentation/TouchController/TCControlContents/ButtonShape)

Defines the visual shape of a button.

[`TCControlContents.DpadDirection`](/documentation/TouchController/TCControlContents/DpadDirection)

Defines the direction of a direction pad visual.

[`TCControlContents.DpadElementStyle`](/documentation/TouchController/TCControlContents/DpadElementStyle)

Defines the visual style of the individual up/down/left/right elements of a direction pad.



---

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)