<!--
{
  "availability" : [
    "iOS: 10.0.0 -",
    "iPadOS: 10.0.0 -",
    "macCatalyst: 10.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 9.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "CallKit",
  "identifier" : "/documentation/CallKit/CXPlayDTMFCallAction",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "CallKit"
    ],
    "preciseIdentifier" : "c:objc(cs)CXPlayDTMFCallAction"
  },
  "title" : "CXPlayDTMFCallAction"
}
-->

# CXPlayDTMFCallAction

An encapsulation of the act of playing a dual tone multifrequency (DTMF) sequence.

```
class CXPlayDTMFCallAction
```

## Overview

[`CXPlayDTMFCallAction`](/documentation/CallKit/CXPlayDTMFCallAction) is a concrete subclass of [`CXCallAction`](/documentation/CallKit/CXCallAction). Whenever digits are transmitted during a call, whether from a user interacting with a number pad or following a hard or soft pause, the provider sends [`provider(_:perform:)`](/documentation/CallKit/CXProviderDelegate/provider(_:perform:)-4htxt) to its delegate. The provider’s delegate calls the [`fulfill()`](/documentation/CallKit/CXAction/fulfill()) method to indicate that the action was successfully performed.

The provider sends [`provider(_:perform:)`](/documentation/CallKit/CXProviderDelegate/provider(_:perform:)-4htxt) for successive actions only after the current action is fulfilled. When interacting with the number pad, each entered digit constitutes its own action. Digits following a hard or soft pause, however, are passed to [`provider(_:perform:)`](/documentation/CallKit/CXProviderDelegate/provider(_:perform:)-4htxt) as a single string of digits. For example, if a user taps the 4 button on the number pad, followed by the 2 button, the delegate is sent [`provider(_:perform:)`](/documentation/CallKit/CXProviderDelegate/provider(_:perform:)-4htxt) for the digit `4` and waits for the action to be fulfilled; after the action is fulfilled, the delegate is sent [`provider(_:perform:)`](/documentation/CallKit/CXProviderDelegate/provider(_:perform:)-4htxt) for the digit `2`.

CallKit automatically plays the corresponding DTMF frequencies for any digits transmitted over a call. The app is responsible for managing the timing and handling of digits as part of fulfilling the action.

## Topics

### Creating New Actions

[`-  initWithCallUUID:digits:type:`](/documentation/CallKit/CXPlayDTMFCallAction/init(call:digits:type:))

Initializes a new action for a call identified by a given UUID, as well as a specified type and sequence of digits.

[`-  initWithCoder:`](/documentation/CallKit/CXPlayDTMFCallAction/init(coder:))

Creates a new action to play dual-tone multifrequency (DTMF) tones with data in an unarchiver.

### Accessing Action Information

[`digits`](/documentation/CallKit/CXPlayDTMFCallAction/digits)

The digits tapped by the user into the in-call keypad or included in the dial string.

[`type`](/documentation/CallKit/CXPlayDTMFCallAction/type)

The type of the call action.

### Constants

[`ActionType`](/documentation/CallKit/CXPlayDTMFCallAction/ActionType)

The types of events that generate dial tones.

## Relationships

### Conforms To

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

[`NSSecureCoding`](/documentation/Foundation/NSSecureCoding)

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

[`NSCoding`](/documentation/Foundation/NSCoding)

[`NSCopying`](/documentation/Foundation/NSCopying)

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

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

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

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

### Inherits From

[`CXCallAction`](/documentation/CallKit/CXCallAction)

---

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)