Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

iOS 26: `_UIFloatingBarContainerView` marks sheet content (and sometimes whole screens) as covered

Ouverte
#3,628 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
swift, typescript
Domaine
mobile, testing

Piste de recherche

Start with the coverage pass that marks toolbar nodes as overlays, and the full-window exemption it applies, then check how snapshot -i filters window nodes before that exemption runs. Reproduce with a SwiftUI sheet containing a List of Buttons on an iOS 26 simulator, comparing snapshot --raw --json with press. Done when rows in a sheet are pressable by ref, label and identifier, and snapshot -i agrees with what press decides.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

Environment

  • agent-device 0.21.19
  • iOS 27.0 simulator (iPhone, 402×874 pt); the floating bar container exists since iOS 26
  • SwiftUI app with a NavigationStack and a .sheet with .presentationDetents([.medium, .large])

Summary

On iOS 26, UIKit adds a floating bar container (_UIFloatingBarContainerView) to every navigation context. XCUITest reports it with type Toolbar and label Toolbar. agent-device's coverage pass treats every toolbar node as an overlay. The full-window exemption only applies when the bar's rect equals the nearest window rect.

So:

  1. In a sheet the container has the sheet's frame (for example x8 y415 w386 h451), not the window frame. It comes later in tree order than the sheet rows, so every row is marked covered. press @ref, press 'label="…"', and press 'id="…"' all fail with covered by another visible element. The rows are hittable in the app; a coordinate tap at their centre works.
  2. On a full-screen view the container has the window frame and is exempt in the full snapshot. In snapshot -i the window node is filtered out, so the exemption cannot apply, and every node prints [covered] even though presses work.

The container has no interactive children of its own in these cases.

Steps to reproduce

  1. Present a SwiftUI sheet containing a List of Button rows on an iOS 26 simulator.
  2. agent-device snapshot -i → all rows [covered].
  3. agent-device press 'id="<row identifier>"' → covered by another visible element.
  4. agent-device snapshot --raw --json shows a Toolbar node (_UIFloatingBarContainerView) after the rows, with the sheet's rect.
  5. agent-device press <centre x> <centre y> → the row activates.

Expected

Rows inside the sheet are pressable by ref, label, and identifier.

Suggested fix

Any one of:

  • Do not treat _UIFloatingBarContainerView (or a toolbar with no interactive descendants) as an overlay.
  • Exempt a bar whose rect equals its nearest sheet/scene container rect, not only the window.
  • Apply the full-window exemption before -i filtering, so snapshot -i matches what press decides.

Related (separate issue?)

A SwiftUI Menu prints as [popupbutton] with an unlabeled child [button] that nearly fills it. press on the popup button fails with has no parent-owned touch point outside its interactive descendants, because no point is ≥12 pt from the child. Treating a child whose rect is within a few points of the parent as the same target (or pressing the child automatically when it is the only competitor) would make SwiftUI menus pressable by label or identifier.

Langage dominant
TypeScript
Étoiles
5k
Forks
334
Merge moyen
13 h 19 min
PR mergées (30 j)
630

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de callstack/agent-device

Toutes les issues de callstack/agent-device

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.