---
title: TCTouchController
framework: Touch Controller
role: symbol
role_heading: Class
platforms: [iOS 26.0+, iPadOS 26.0+, Mac Catalyst 26.0+]
path: touchcontroller/tctouchcontroller
---

# TCTouchController

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

## Declaration

```swift
class TCTouchController
```

## Overview

Overview The controller exposes controls through a GCController instance, and enables seamless integration with the Game Controller framework. This class manages the lifecycle of touch controls, handles user interaction, renders the controls using Metal, and provides a GCController instance that reflects the state of the on-screen controls.

## Topics

### Creating a touch controller

- [init(descriptor:)](touchcontroller/tctouchcontroller/init(descriptor:).md)
- [TCTouchControllerDescriptor](touchcontroller/tctouchcontrollerdescriptor.md)

### Inspecting the touch controller

- [buttons](touchcontroller/tctouchcontroller/buttons.md)
- [controls](touchcontroller/tctouchcontroller/controls.md)
- [device](touchcontroller/tctouchcontroller/device.md)
- [directionPads](touchcontroller/tctouchcontroller/directionpads.md)
- [drawableSize](touchcontroller/tctouchcontroller/drawablesize.md)
- [size](touchcontroller/tctouchcontroller/size.md)
- [switches](touchcontroller/tctouchcontroller/switches.md)
- [isConnected](touchcontroller/tctouchcontroller/isconnected.md)
- [isSupported](touchcontroller/tctouchcontroller/issupported.md)
- [throttles](touchcontroller/tctouchcontroller/throttles.md)
- [thumbsticks](touchcontroller/tctouchcontroller/thumbsticks.md)
- [touchpads](touchcontroller/tctouchcontroller/touchpads.md)

### Getting the touch controller

- [controller](touchcontroller/tctouchcontroller/controller.md)

### Adding a button control

- [addButton(descriptor:)](touchcontroller/tctouchcontroller/addbutton(descriptor:).md)
- [TCButtonDescriptor](touchcontroller/tcbuttondescriptor.md)

### Adding a directional pad control

- [addDirectionPad(descriptor:)](touchcontroller/tctouchcontroller/adddirectionpad(descriptor:).md)
- [TCDirectionPadDescriptor](touchcontroller/tcdirectionpaddescriptor.md)

### Adding a switch control

- [addSwitch(descriptor:)](touchcontroller/tctouchcontroller/addswitch(descriptor:).md)
- [TCSwitchDescriptor](touchcontroller/tcswitchdescriptor.md)

### Adding a throttle control

- [addThrottle(descriptor:)](touchcontroller/tctouchcontroller/addthrottle(descriptor:).md)
- [TCThrottleDescriptor](touchcontroller/tcthrottledescriptor.md)

### Adding a thumbstick control

- [addThumbstick(descriptor:)](touchcontroller/tctouchcontroller/addthumbstick(descriptor:).md)
- [TCThumbstickDescriptor](touchcontroller/tcthumbstickdescriptor.md)

### Adding a touchpad control

- [addTouchpad(descriptor:)](touchcontroller/tctouchcontroller/addtouchpad(descriptor:).md)
- [TCTouchpadDescriptor](touchcontroller/tctouchpaddescriptor.md)

### Connecting and disconnecting a controller

- [connect()](touchcontroller/tctouchcontroller/connect().md)
- [disconnect()](touchcontroller/tctouchcontroller/disconnect().md)

### Getting the controller at a point

- [control(at:)](touchcontroller/tctouchcontroller/control(at:).md)

### Handling layout updates

- [automaticallyLayoutControls(for:)](touchcontroller/tctouchcontroller/automaticallylayoutcontrols(for:).md)
- [render(using:)](touchcontroller/tctouchcontroller/render(using:).md)

### Handling a touch

- [handleTouchBegan(at:index:)](touchcontroller/tctouchcontroller/handletouchbegan(at:index:).md)
- [handleTouchEnded(at:index:)](touchcontroller/tctouchcontroller/handletouchended(at:index:).md)
- [handleTouchMoved(at:index:)](touchcontroller/tctouchcontroller/handletouchmoved(at:index:).md)

### Removing controls

- [removeControl(_:)](touchcontroller/tctouchcontroller/removecontrol(_:).md)
- [removeAllControls()](touchcontroller/tctouchcontroller/removeallcontrols().md)

### Getting the touch controller category

- [TCGameControllerProductCategoryTouchController](touchcontroller/tcgamecontrollerproductcategorytouchcontroller.md)

## Relationships

### Inherits From

- [NSObject](objectivec/nsobject-swift.class.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
