From 5012a8b1763e29a7a6738321863695ade8900c9d Mon Sep 17 00:00:00 2001 From: Frank Osterfeld Date: Wed, 1 Oct 2025 13:14:44 +0200 Subject: [PATCH 5/7] a11y iOS: Give focus state to items with accessibility focus Ensure that when an accessibility item is focused using left/right swipe (with VoiceOver enabled), the underlying item gets focused. Task-number: QTBUG-140744 Change-Id: I0cce70506eee14d25f02c1cc57275b0f242d025a --- .../platforms/ios/qiosplatformaccessibility.mm | 9 ++++++++- src/plugins/platforms/ios/quiaccessibilityelement.mm | 11 +++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/plugins/platforms/ios/qiosplatformaccessibility.mm b/src/plugins/platforms/ios/qiosplatformaccessibility.mm index 14882561973..18ecfa0ed1f 100644 --- a/src/plugins/platforms/ios/qiosplatformaccessibility.mm +++ b/src/plugins/platforms/ios/qiosplatformaccessibility.mm @@ -16,7 +16,14 @@ m_focusObserver = QMacNotificationObserver( nil, UIAccessibilityElementFocusedNotification, [&](NSNotification *notification) { id element = notification.userInfo[UIAccessibilityFocusedElementKey]; - m_focusElement = static_cast(element); + auto newElement = static_cast(element); + if (m_focusElement == newElement) { + return; + } + m_focusElement = newElement; + if ([m_focusElement respondsToSelector:@selector(setFocus)]) { + [m_focusElement setFocus]; + } }); } diff --git a/src/plugins/platforms/ios/quiaccessibilityelement.mm b/src/plugins/platforms/ios/quiaccessibilityelement.mm index 754ad0d9c01..68664740cea 100644 --- a/src/plugins/platforms/ios/quiaccessibilityelement.mm +++ b/src/plugins/platforms/ios/quiaccessibilityelement.mm @@ -61,6 +61,17 @@ - (BOOL)isAccessibilityElement return YES; } +- (void)setFocus +{ + QAccessibleInterface *iface = QAccessible::accessibleInterface(self.axid); + if (!iface) { + return; + } + if (auto action = iface->actionInterface()) { + action->doAction(QAccessibleActionInterface::setFocusAction()); + } +} + - (NSString*)accessibilityLabel { QAccessibleInterface *iface = QAccessible::accessibleInterface(self.axid); -- 2.50.1 (Apple Git-155)