<!--
{
  "availability" : [
    "iOS: 26.0.0 -",
    "iPadOS: 26.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "AVKit",
  "identifier" : "/documentation/AVKit/AVInputPickerInteraction",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "AVKit"
    ],
    "preciseIdentifier" : "c:objc(cs)AVInputPickerInteraction"
  },
  "title" : "AVInputPickerInteraction"
}
-->

# AVInputPickerInteraction

An object that presents the system’s audio input picker so people can choose which microphone to use for recording audio.

```
@MainActor class AVInputPickerInteraction
```

## Overview

People expect the microphone they chose to be the one your app records with. Add an input picker interaction to a view, and your app presents the same picker the system uses, listing the audio inputs available at that moment.

Create an interaction with [`init(audioSession:)`](/documentation/AVKit/AVInputPickerInteraction/init(audioSession:)) to pick inputs for a specific audio session, or with [`init()`](/documentation/AVKit/AVInputPickerInteraction/init()) to use the shared session. Pass a session that records, or that you switch to recording, because a session in any other mode produces an empty list of inputs. Add the interaction to a view the way you add any <doc://com.apple.documentation/documentation/UIKit/UIInteraction>, then call [`present()`](/documentation/AVKit/AVInputPickerInteraction/present()) from the control that offers input selection. Call [`dismiss()`](/documentation/AVKit/AVInputPickerInteraction/dismiss()) to take the picker away, and read [`isPresented`](/documentation/AVKit/AVInputPickerInteraction/isPresented) to find out whether it’s onscreen.

Set [`delegate`](/documentation/AVKit/AVInputPickerInteraction/delegate-swift.property) to a [`AVInputPickerInteraction.Delegate`](/documentation/AVKit/AVInputPickerInteraction/Delegate-swift.protocol) to learn when the picker begins and finishes presenting, and when it begins and finishes dismissing. The interaction reports those transitions around its own presentation, so an app that dims its interface while someone chooses an input has a place to do that work.

## Topics

### Creating an input picker

[`init()`](/documentation/AVKit/AVInputPickerInteraction/init())

Creates a new instance of AVInputPickerController using a default sharedInstance from `AVAudioSession`.

[`init(audioSession: AVAudioSession?)`](/documentation/AVKit/AVInputPickerInteraction/init(audioSession:))

Creates a new instance of AVInputPickerInteraction using a specific `AVAudioSession`.

### Managing presentation

[`var isPresented: Bool`](/documentation/AVKit/AVInputPickerInteraction/isPresented)

A Boolean value that indicates whether the picker is currently visible.

[`func present()`](/documentation/AVKit/AVInputPickerInteraction/present())

Presents the input picker.

[`func dismiss()`](/documentation/AVKit/AVInputPickerInteraction/dismiss())

Dismisses the input picker.

### Setting the delegate

[`var delegate: (any AVInputPickerInteraction.Delegate)?`](/documentation/AVKit/AVInputPickerInteraction/delegate-swift.property)

The input picker view’s delegate.

[`protocol Delegate`](/documentation/AVKit/AVInputPickerInteraction/Delegate-swift.protocol)

The `AVInputPickerInteractionDelegate` protocol defines methods you use to receive notifications about transitions in an `AVInputPickerInteraction` object.

### Accessing the audio session

[`var audioSession: AVAudioSession`](/documentation/AVKit/AVInputPickerInteraction/audioSession)

The audio session for the picker.

## Relationships

### Conforms To

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

[`UIInteraction`](/documentation/UIKit/UIInteraction)

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

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

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

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

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

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

### Inherits From

[`NSObject-swift.class`](/documentation/ObjectiveC/NSObject-swift.class)

---

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)