diff --git a/src/plugins/platforms/ios/quiaccessibilityelement.mm b/src/plugins/platforms/ios/quiaccessibilityelement.mm index fa54f61967e..d13b18a859b 100644 --- a/src/plugins/platforms/ios/quiaccessibilityelement.mm +++ b/src/plugins/platforms/ios/quiaccessibilityelement.mm @@ -36,16 +36,22 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(QMacAccessibilityElement); QMacAccessibilityElement *element = cache->elementForId(anId); if (!element) { - auto *a11yInterface = QAccessible::accessibleInterface(anId); - Q_ASSERT(a11yInterface); - auto *window = a11yInterface->window(); + QWindow *window = nullptr; + auto *iface = QAccessible::accessibleInterface(anId); + while (iface) { + if ((window = iface->window())) + break; + iface = iface->parent(); + } + if (window && window->handle()) { auto *platformWindow = static_cast(window->handle()); element = [[self alloc] initWithId:anId withAccessibilityContainer:platformWindow->view()]; cache->insertElement(anId, element); } else { - qWarning() << "Could not create a11y element for" << window - << "with platform window" << (window ? window->handle() : nullptr); + qWarning() << "Could not create a11y element for" << iface + << "with window" << window + << "and platform window" << (window ? window->handle() : nullptr); } } return element; diff --git a/src/plugins/platforms/ios/quiview_accessibility.mm b/src/plugins/platforms/ios/quiview_accessibility.mm index a95610614be..9eef855b620 100644 --- a/src/plugins/platforms/ios/quiview_accessibility.mm +++ b/src/plugins/platforms/ios/quiview_accessibility.mm @@ -13,8 +13,8 @@ if (!iface || iface->state().invisible || (iface->text(QAccessible::Name).isEmpty() && iface->text(QAccessible::Value).isEmpty() && iface->text(QAccessible::Description).isEmpty())) return; QAccessible::Id accessibleId = QAccessible::uniqueId(iface); - UIAccessibilityElement *elem = [QT_MANGLE_NAMESPACE(QMacAccessibilityElement) elementWithId:accessibleId]; - [m_accessibleElements addObject:elem]; + if (UIAccessibilityElement *elem = [QT_MANGLE_NAMESPACE(QMacAccessibilityElement) elementWithId:accessibleId]) + [m_accessibleElements addObject:elem]; } - (void)createAccessibleContainer:(QAccessibleInterface *)iface