Explore best practices for creating inclusive apps for users of Apple accessibility features and users from diverse backgrounds.

All subtopics
Posts under Accessibility & Inclusion topic

Post

Replies

Boosts

Views

Activity

How to Enable Group Navigation Behavior for Custom Views in VoiceOver?
In VoiceOver, when using Group Navigation style, the cursor first focuses on the semantic group. To navigate inside the group, a two-finger swipe (left or right) can be used. This behavior works for default containers like the Navigation Bar, Tab Bar, and Tool Bar. How can I achieve the same behavior for a custom view? I tried setting accessibilityContainerType = .semanticGroup, but it only works for Mac Catalyst. Is there an equivalent approach for iOS?
0
0
380
Mar ’25
TabItems in swiftUI do not scale
I have a TabView with a sample tabItem as follows: .tabItem { Label ("Import", systemImage:"doc.on.doc") .accessibilityLabel("Import Text") } But accessibility settings for large display size on does not seem to work, nor do dynamic font sizes: .tabItem { Label ("Import", systemImage:"doc.on.doc") .font(.largeTitle) .accessibilityLabel("Import Text") } The tabItems appear as a fixed size. The tab contents scale well, so this does not look pleasant at all. Is this a known bug in SwiftUI?
0
0
712
Jul ’25
Implementing App Clips with .NET MAUI
We have an iOS App built in .NET MAUI (Multi-platform App UI). This is a web view App. We wish to integrate APP Clips into this App. But we are unable to do it, due to less available resources online on such implementation. We do not wish to share code between .NET MAUI App and App clips. We understand it is not possible to add APP Clips without a parent swift/Xcode app. As an alternative solution we were thinking to Create a new APP in APP Store Connect using XCode/swift and integrate app clips to it. This parent app when downloaded by users will only redirect users to our MAIN .NET MAUI app to app store connect. We need to know if such apps will be approved by APPSTORE Connect? Please guide us on this. Also please do let us know if you have any other solution to integrate App clips to a .NET MAUI App
0
1
84
Jun ’25
SwiftUI Full keyboard access doesn't navigate through every button on screen
I have screen in my app that can represented by following layout, I would like this screen to be possible to navigate with full keyboard access but there is unexpected behavior: Path: Tap "Tab" on keyboard -> whole scrollview is targeted and inside the first button1 is selected. Arrow down -> selection changes to button3 Arrow up -> selection changes back to button1 So button2 is always skipped, there is no way to navigate to it by arrows left/right. Using Tab+F and searching "button2", button2 is correctly selected, so it's selectable but for some reason not findable by going through elements. Putting empty text in Text views cause buttons to be vertically aligned and then everything works correctly but it is not an option. public struct BugReportView: View { public var body: some View { ScrollView { VStack(spacing: .zero) { Button("button1", action: { }) HStack { Text("some text") Text("some text2") Button("button2", action: { }) } Button("button3", action: { }) } } } }
0
3
145
May ’25
Resetting the selected accessibility action on a button
I have a record button that either starts or stops a recording using the default action. When the user is recording, I want to add a custom action to discard the recording instead of saving it. That all works fine with the following code: if isRecording { recordButton.accessibilityCustomActions = [ .init(name: String(localized: "discard recording"), actionHandler: { [weak delegate] _ in delegate?.discardRecording() return true }) ] recordButton.accessibilityLabel = String(localized: "stop recording", comment: "accessibility label") } else { recordButton.accessibilityCustomActions = [] recordButton.accessibilityLabel = String(localized: "start recording", comment: "accessibility label") } The problem I have is that when a user chose "discard recording", it becomes the default selected action again the next time the user records, and instead of stopping and saving the recording, the user might accidentally discard the next one as well. How can I programmatically reset the selected action on this recordButton to the default action?
0
0
413
Oct ’24
IOS Applink Not Working
Hello There, I setup the applinks in ios app. The associated domain url returning the correct response and in my app the same is been confiqured. But when the link is called the app is not recognising. I tried all the possible method but its not working.
0
0
396
Sep ’24
AWDL operation mode from AUTO to SUSPENDED Fault
mac book air 2016 will not switch on just loading apple screen comes up please assist me anyone. 1080211AWDLPeerManager: :setAwd|SuspendedMode() Suspending AWDL, enterQuietMade (true) 1080211AWDLPeerManager:: setAwdlOperatingMode Setting the AWDL operation mode from SUSPENDED to AUTO 1080211AWDLPeerManager: :setAwd|AutoMode Resuming AWDL 1080211AWDLPeerManager: : setAwdlOperatingMode Setting the AWDL operation made from AUTO to SUSPENDED 1080211AWDLPeerManager: :setAwd|SuspendedMode() Suspending AWDL, enterQuietMode(true) 1080211AWDLPeer Manager: : setAwdlOperat ingMode Setting the AWDL operation mode from SUSPENDED to AUTO 1080211AWDLPeerManager: :setAwd|AutoMode Resuming AWDL 1080211AWDLPeerManager: :setAwdlOperatingMode Setting the AWDL operation made from AUTO to SUSPENDED 1080211AWDLPeerManager: :setAwdlSuspendedMode() Suspending AWDL, enterQuietlade (true) 1080211AWDLPeerManager: :setAwdLOperatingMode Setting the AWDL operation mode from SUSPENDED to AUTO 1080211AWDLPeerManager: :setAwdLAutoMode Resuming AWDL 1080211AWDLPeerManager: :setAwdLOperatingMode Setting the AWDL operation mode from AUTO to SUSPENDED I080211AWDLPeerManager: :setAwdlSuspendedMode() Suspending AWDL, enterQuietMode (true) 1080211AWDLPeerManager:: setAwdlOperatingMode Setting the AWDL operation mode from SUSPENDED to AUTO 1080211AWDLPeerManager: :setAwdlAutoMode Resuming AWDL 1080211AWDLPeerManager: :setAwd LOperatingMode Setting the AWDL operation mode from AUTO to SUSPENDED 1080211AWDLPeerManager ::setAwdlSuspendedMode( Suspending AWDL, enterQuietMode (true) 1080211AWDLPeerManager: :setAwdLOperatingMode Setting the AWDL operation mode from SUSPENDED to AUTO 1080211AWDLPeerManager: :setAwdlAutoMode Resuming AWDL 1080211AWDLPeerManager: :setAwdlOperatingMode Setting the AWDL operation mode from AUTO to SUSPENDED 1080211AWDLPeerManager:: setAwdlSuspendedMode() Suspending AWDL, enterQuietMode(true) 1080211AWDLPeerManager: :setAwdLOperatingMode Setting the AWDL operation mode from SUSPENDED to AUTO 1080211AWDLPeerManager : :setAwdlAutoMode Resuming AWDL 1080211AWDLPeerManager: :setAwdLOperatingMode Setting the AWDL operation mode from AUTO to SUSPENDED 1080211AWDLPeerManager ::setAwdlSuspendedMode() Suspending AWDL, enterQuietMode (true) 1080211AWDLPeer Manager: :setAwdlOperatingMode Setting the AWDL operation mode from SUSPENDED to AUTO 1080211AWDLPeerManager: :setAwdLAutoMode Resuming AWDL 1080211AWDLPeerManager ::setAwdlOperatingMode Setting the AWDL operation mode from AUTO to SUSPENDED 1080211AWDLPeerManager: : setAwd|SuspendedMode () Suspending ANDL, enterQuietMode (true) 1080211AWDLPeerManager: :setAwdlOperatingMode Setting the AWDL operation mode from SUSPENDED to AUTO 1080211AWDLPeerManager: :setAwdlAutoMode Resuming AWDL 1080211AWDLPeerManager: :setAwdLOperatingMode Setting the AWDL operation mode from AUTO to SUSPENDED
0
0
352
Oct ’24
Using WebSocket for BCI Click Input in VisionOS - FocusState vs. System-Level Limitations
Hi everyone, My team and I are developing an accessibility-focused VisionOS app (MindTap) as part of a university project, aiming to support individuals with Locked-In Syndrome using Brain-Computer Interface (BCI) signals to trigger interactions (e.g., tapping) within the Apple Vision Pro environment. Problem 1: Simulating Eye Tracking in Simulator We are testing onHover with Send pointer to the device under I/O > Input in the simulator, and while it mostly works (a bit laggy), we found that onHover won't function on the actual Vision Pro hardware. From what I understand, we should be using FocusState for proper gaze interaction, but testing this requires the physical device. Is there any workaround or official Apple-recommended way to simulate Focus-based gaze detection without a real Vision Pro? Problem 2: WebSocket-triggered "Click" doesn't work outside the app We successfully use WebSocket to send a custom signal (a "1" from the brain signal device) to trigger an action inside our app. However, when the user opens a third-party app like Apple News, the WebSocket-triggered "click" no longer works. We suspect this is due to sandbox restrictions or lack of system-level permissions. Is it possible in anyway to: Trigger interaction events outside the app using custom input (like BCI via Websocket)? Access system-wide click/tap simulation APIs from within VisionOS apps Integrate this with accessibility services (like Voice Control or AssistiveTouch) We'd appreciate any official guidance or tips from others building similar accessibility apps with alternative input methods in VisionOS. Thanks in advance for any insight you can provide!
0
0
79
Apr ’25
Allow Mobile Data switching
there is no possibility to sett the allow mobile Data switch I have the latest update but still does not work and I realised it when I went to another country and I could not sett my Mobile data and when I came back still I could not.
0
0
755
2w
How to lookup keybinding translation across input sources
I have an application that binds a menu item to trigger on ⌘]. When I set the US input source, I press ⌘] in order to trigger that item. However, when I switch the input source to QWERTZ (German), the trigger changes to ⌘Ä automatically by the OS. It seems to translate keystrokes for different input sources. The problem is that I also render the keybindings in a window in my application, and my application is not aware of this translation. Furthermore, I have other key shortcuts in my application which are not bound to menu items, and I want to make sure those get translated too. Does AppKit expose a way to lookup what a keystroke will be when MacOS translates it, i.e. lookup ⌘Ä from ⌘] when the current layout is QWERTZ? I can't find anything in Apple's docs. I tried converting a character to virtual key code based on the US layout and then mapping it back to a character based on the QWERTZ layout. That doesn't seem to be the same b/c that ends up converting ] to + instead which seems to be based on physical key location, different from how the keybindings are handled. Update: I notice similar behavior for VS Code's menu bar, e.g. in their "Terminal" menu. Switching to German changes some bindings. This does not occur at all in iTerm's menu bar, I suspect b/c their menu items are specified in a different way, xib files with hard-coded key equivalents
0
0
366
Jan ’25
renew membership
I can't renew my membership. And I can't update my information such as address/country. How can I solve this? I now live in the Netherlands and now I have a Dutch company. I want to update my address/country information with this company information. and now I want to renew my membership with euros. how can I do this. ?.
0
0
561
Oct ’24
Email swipe left
Before 18.2 when we swipe email left, the sending address was visible. Now the first line of the email is visible. So now to block scam/spoof mail we have to actually open the email, tap on the sender, then close email, then block. Can we at least have an option to choose? The new set up is both cumbersome and time consuming.
0
0
415
Nov ’24