iPadOS: UITextField .phonePad popover does not reopen after dismissal while still first responder

I can reproduce a phone-keypad popover reopening issue in a standalone UIKit app, with no third-party frameworks or custom input view.

Environment

  • iPad Pro 11-inch (M4) simulator, iPadOS 26.5, landscape
  • Xcode 27.1
  • Observed when UIKit presents the small telephone-keypad popover for a UITextField whose keyboardType is .phonePad. Device Hub's hardware/software keyboard settings affect whether this popover or the full-width keyboard appears.
  • Reproduced both in a plain UIViewController inside UINavigationController and in a stock UISplitViewController. Physical-device behavior and other OS versions have not been verified.

Steps

  1. Add a normal UITextField, set keyboardType = .phonePad, and call becomeFirstResponder() in viewDidAppear.
  2. With the small phone-keypad popover visible, tap blank space outside it to dismiss it.
  3. Tap the same text field again.

Expected: The telephone-keypad popover reopens so the user can continue entering a phone number.

Actual: The popover does not reopen. Sometimes an AutoFill edit menu appears instead. The text field still reports isFirstResponder == true. Calling becomeFirstResponder() again returns true but does not restore the keypad.

The baseline has no UITextFieldDelegate, custom gesture recognizer, custom inputView, or automatic focus-recovery code.

Diagnostic results in this environment

  • Repeating becomeFirstResponder() while already first responder: returns true, keypad remains absent.
  • Explicitly calling reloadInputViews(): keypad reappears.
  • Explicitly calling resignFirstResponder(), then becomeFirstResponder() in a separate button action: keypad reappears.
  • Recreating the view controller: keypad reappears.

The attached animated screen recording shows initial presentation, dismissal, a failed retap, a responder-state snapshot, another becomeFirstResponder() call, and recovery after Reload inputs. The diagnostic buttons only perform the named action; no recovery runs automatically.

Relevant setup/actions from the standalone app:

private let phoneField = UITextField()

// viewDidLoad: add phoneField to the view and set its constraints
phoneField.keyboardType = .phonePad

// viewDidAppear
let result = phoneField.becomeFirstResponder()
print(result, phoneField.isFirstResponder)

// Diagnostic button A, after dismissing and retapping:
let again = phoneField.becomeFirstResponder()
print(again, phoneField.isFirstResponder) // true, true; keypad absent

// Diagnostic button B:
phoneField.reloadInputViews() // popover reappears in this test

One additional observation: keyboard hide notifications can be delivered even while the small telephone-keypad popover is visibly present. Therefore, the last keyboard notification/frame is not a reliable visibility signal for this popover in this test.

Is this an expected distinction between the phone-keypad popover and the software keyboard, or a UIKit/Simulator issue? What is the recommended public-API approach to allow a user to reopen it after dismissal? In particular, is calling reloadInputViews() when the field is already first responder an appropriate workaround, and is there a supported way to detect this popover's dismissed state?

I have not yet filed a Feedback Assistant report, so there is no FB number to reference. I can provide the standalone reproduction project if needed.