Explore best practices for creating inclusive apps that cater to users with diverse abilities

Learn More

Posts under General subtopic

Post

Replies

Boosts

Views

Activity

Nearby Interactions, wih camera assistance
I have an app that uses nearby with a custom accessory. works great on iPhone 11-13, starting with iPhone 14, one must use ARkit to get angles we have two problems ARkit is light sensitive, and we do not control the lighting where this app would run.. the 11-13 action works great even in the dark. (our users are blind, this is an accessibility app) ARkit wants to be foreground, but our uses cannot see it, and we have a voice oriented UI that provides navigation instructions.. IF ARkit is foreground, our app doesn't work. with iPhone 15 ProMax, on IOS 18, I got an error, access denied. (not permission denied) now that I am on IOS 26.. bt scan doesn't happen also fails same way on iPhone 17 on IOS26, can't callback now as release signing is no longer done this same code works ok on iOS 17.1 on iPhone 12. Info.plist here info.txt if(SearchedServices == [] ){ services = [TransferService.serviceUUID,QorvoNIService.serviceUUID] } logger.info( "scannerready, starting scan for peripherals \(services) and devices \(IDs)") filteredIDs=IDs; scanning=true; centralManager.scanForPeripherals(withServices: services, options: [CBCentralManagerScanOptionAllowDuplicatesKey: true]) the calling code dataChannel.autoConnect=autoConnect; dataChannel.start(x,ids) // datachannel.start is above self.scanning = true; return "scanning started"; ... log output services from js = and devices= 5FE04CBB services in implementation = bluetooth ready, starting scan for peripherals [] and devices ["5FE04CBB"] scannerready, starting scan for peripherals [6E400001-B5A3-F393-E0A9-E50E24DCCA9E, 2E938FD0-6A61-11ED-A1EB-0242AC120002] and devices ["5FE04CBB"] ⚡️ TO JS {"value":"scanning started"}
6
2
3.1k
6h
apple developer enrollment
I applied for the apple developer program and my payment went through and the account is on pending I received an email from the apple developer team that I need to upload my ID again, and when I press on the link I get this message: "Sorry, you don’t have access. Your account isn’t authorized to upload files." I tried contacting the support team but I haven't heard from them back how can I fix this? also now on my app says "enroll now" again although I have an active subscription
0
0
47
15h
Arte é licença
CC BY-NC-ND 4.0 Licença Creative Commons Atribuição-NãoComercial-SemDerivações 4.0 Internacional Esta licença exige que os reutilizadores deem crédito ao criador. Ela permite que os reutilizadores copiem e distribuam o material em qualquer meio ou formato, em sua forma original e apenas para fins não comerciais. POR O crédito deve ser dado a você, o criador. Carolina do Norte É permitido apenas o uso não comercial da sua obra. Não comercial significa não ter como objetivo principal obter vantagem comercial ou compensação monetária. ND Não são permitidas obras derivadas ou adaptações da sua obra. Consulte
0
0
24
1d
next gen Voice Control
Given the new Voice Control natural language enhancements, is there any change in guidance for how developers use accessibilitylnputLabels? Does providing robust utterance coverage across our views still help tune the new system's NLU?
3
1
113
2d
Apple Accessibility Team
I have been trying for 7 months to speak to someone at Apple about their accessibility work for my job as assistive technology advisor. I haven’t been able to speak to anyone regarding this despite emailing a number of different departments and people at Apple. Other tech firms have been happy to become involved, can anyone help?
7
1
140
3d
FaceTime API for sign language interpretation app devs
Hello, I'm having a very hard time finding where any documentation or session or any WWDC related announcement related to the FaceTime API that was mentioned in this press release last month. https://www.apple.com/newsroom/2026/05/apple-unveils-new-accessibility-features-and-updates-with-apple-intelligence/ "For sign language interpretation app developers, a new API supports users in adding a human interpreter to an ongoing FaceTime video call." Can anyone please point me in the right direction? I have searched everywhere in Developer.app, documentation released during this WWDC, and here in the Forums and have yet to find anything.
0
0
93
3d
The default voiceover
The default VoiceOver behavior is to start at the toolbar and work its way down. In some cases, this feels unintuitive to me. One example - my app persists which Tab you were last on across sessions. But on iOS, the tab bar is at the bottom. Sighted users have immediate context. I explored trying to insert a VO bit on load to announce which Tab is active, but that didn't work well and would sometimes clash with other VoiceOver elements. Any guidance here? I'm not a VoiceOver user, so please let me know if I'm trying to change a default AX behavior that shouldn't be messed with. But I want to make sure a VO user has the right context of where they're being dropped into.
1
0
67
3d
Fullscreen Detection
Hi, I want to detect if there is a fullscreen window on each screen. _AXUIElementGetWindow and kAXFullscreenAttribute methods work, but I have to be in a non-sandbox environment to use them. Is there any other way that also works? I don't think it's enough to judge if it's fullscreen by comparing the window size to the screen size, since it doesn't work on MacBook with notch, or the menu bar is set to 'auto-hide'. Thanks.
14
1
2.2k
4d
overriding default VoiceOver ordering
The default VoiceOver behavior is to start at the toolbar and work its way down. In some cases, this feels unintuitive to me. One example - my app persists which Tab you were last on across sessions. But on iOS, the tab bar is at the bottom. Sighted users have immediate context. I explored trying to insert a VO bit on load to announce which Tab is active, but that didn't work well and would sometimes clash with other VoiceOver elements. Any guidance here? I'm not a VoiceOver user, so please let me know if I'm trying to change a default AX behavior that shouldn't be messed with. But I want to make sure a VO user has the right context of where they're being dropped into.
1
0
97
4d
VoiceOver voices not included by default
Up to iOS 18 there were many voices available on device by default including "Nicky" that I use in my app. Somewhere around iOS 18.6 or 26.0 these voices were removed and no longer included in the OS by default. This broke my app that counted on the Nicky voice being available. My only workaround is to direct my users to download the voice again by going to Accessibility > VoiceOver > Speech > Voices and downloading "Nicky". I cannot simply switch to using Samantha (the only voice that is still available by default) because I have heavily customized how IPA pronunciations are tweaked to make Nicky speak Old English correctly. I tried briefly with Samantha but the results were not as good. I have 2 questions: Is there any way for me to include the "Nicky" voice in my app or for me to trigger the download from the app so I don't have to show an error and direct users through the settings app to get the voice? Are there any new features with AI voices in iOS 27 that I can use with IPA pronunciations to get them to speak possibly better than the Nicky voice? FB17834189
1
2
101
4d
Recommended practice for VoiceOver accessibility label aggregation in UIKit (SwiftUI .combine equivalent)
We are seeking guidance on the Apple-recommended way to handle aggregated accessibility labels in UIKit. When grouping elements into a single accessibility container, we need VoiceOver to read their labels with a natural structural pause, without injecting conversational grammar. SwiftUI handles this automatically and gracefully with .combine, but we need the endorsed UIKit equivalent for complex custom views. The Problem When manually aggregating child labels into a parent's accessibilityLabel in UIKit, VoiceOver behaves inconsistently in non-Latin scripts. For example, if we simply join the strings with a Latin comma (", "), VoiceOver ignores the separator in languages like Arabic or Japanese, reading the aggregated labels as a confusing run-on sentence. What we have considered and tried: NSListFormatter: While it correctly localizes separators, it inappropriately injects list grammar (e.g., adding "and" before the final item). Since our UI elements are merely spatially grouped on the screen and do not form a grammatical sentence, this confuses users. Hardcoded punctuation (e.g., Latin commas): Works fine for English, but fails to trigger VoiceOver pauses in non-Latin scripts as mentioned above. Double Line Break (\n\n): We found that joining strings with a double line break universally forces a hard stop and structural pause across all languages without injecting grammar. However, we have received community feedback suggesting that using newlines might cause poor formatting or UX issues on Braille displays. Our Questions: Is there an Apple-endorsed native approach to replicate SwiftUI's .combine behavior in UIKit that avoids injecting conversational grammar? If we must join the strings manually, is using a double line break (\n\n) considered safe and acceptable for Braille display users? Or is it better practice to manually map and apply localized commas? Any guidance from the Accessibility Technologies team or developers who have tackled this in large-scale UIKit apps would be greatly appreciated. Thank you!
2
0
82
4d
Accessibility & Games (any platform)
For games that share a common codebase with multiple targets, what would be the recommended way to handle accessibility? For example an iOS game with a WatchOS companion that can played standalone. Any word how Voice Control will affect this combination? For iOS 26, I've had to handle some aspects of accessibility separately and needed to separate out some of shared codebase into each target.
2
0
82
4d
Do you recommend using the same label for Voice Over and Voice Control for icon buttons?
For example, our app uses an info icon in many places to open modals that explain useful terms or provide disclosures. For Voice Control it feels most natural to have users trigger it with a label like "info" as that matches the icon on-screen but for Voice Over "info" sometimes feels too vague and something like "Open terms to know" would provide more context. Is this just a good example of the use-case for accessibilityInputLabels so that we can have a more descriptive value for Voice Over and also provide a more natural label for Voice Control? Or should we re-think how to label these in a way that is consistent for both technologies?
2
0
96
4d
Nearby Interactions, wih camera assistance
I have an app that uses nearby with a custom accessory. works great on iPhone 11-13, starting with iPhone 14, one must use ARkit to get angles we have two problems ARkit is light sensitive, and we do not control the lighting where this app would run.. the 11-13 action works great even in the dark. (our users are blind, this is an accessibility app) ARkit wants to be foreground, but our uses cannot see it, and we have a voice oriented UI that provides navigation instructions.. IF ARkit is foreground, our app doesn't work. with iPhone 15 ProMax, on IOS 18, I got an error, access denied. (not permission denied) now that I am on IOS 26.. bt scan doesn't happen also fails same way on iPhone 17 on IOS26, can't callback now as release signing is no longer done this same code works ok on iOS 17.1 on iPhone 12. Info.plist here info.txt if(SearchedServices == [] ){ services = [TransferService.serviceUUID,QorvoNIService.serviceUUID] } logger.info( "scannerready, starting scan for peripherals \(services) and devices \(IDs)") filteredIDs=IDs; scanning=true; centralManager.scanForPeripherals(withServices: services, options: [CBCentralManagerScanOptionAllowDuplicatesKey: true]) the calling code dataChannel.autoConnect=autoConnect; dataChannel.start(x,ids) // datachannel.start is above self.scanning = true; return "scanning started"; ... log output services from js = and devices= 5FE04CBB services in implementation = bluetooth ready, starting scan for peripherals [] and devices ["5FE04CBB"] scannerready, starting scan for peripherals [6E400001-B5A3-F393-E0A9-E50E24DCCA9E, 2E938FD0-6A61-11ED-A1EB-0242AC120002] and devices ["5FE04CBB"] ⚡️ TO JS {"value":"scanning started"}
Replies
6
Boosts
2
Views
3.1k
Activity
6h
apple developer enrollment
I applied for the apple developer program and my payment went through and the account is on pending I received an email from the apple developer team that I need to upload my ID again, and when I press on the link I get this message: "Sorry, you don’t have access. Your account isn’t authorized to upload files." I tried contacting the support team but I haven't heard from them back how can I fix this? also now on my app says "enroll now" again although I have an active subscription
Replies
0
Boosts
0
Views
47
Activity
15h
Detecting user wakeup from Apple WatchOS 27
Does Apple WatchOS 27 support my iOS 27 app being notified when the user wakes up?
Replies
1
Boosts
0
Views
97
Activity
1d
Apple WatchOS 27 verbal announcements
Does WatchOS 27 support an iOS 27 app making announcements on the Apple Watch?
Replies
1
Boosts
1
Views
50
Activity
1d
WatchOS 27 Siri-suggested apps
For low vision users, can my app override the Siri-suggested 6 apps and display my suggested apps?
Replies
0
Boosts
0
Views
31
Activity
1d
Arte é licença
CC BY-NC-ND 4.0 Licença Creative Commons Atribuição-NãoComercial-SemDerivações 4.0 Internacional Esta licença exige que os reutilizadores deem crédito ao criador. Ela permite que os reutilizadores copiem e distribuam o material em qualquer meio ou formato, em sua forma original e apenas para fins não comerciais. POR O crédito deve ser dado a você, o criador. Carolina do Norte É permitido apenas o uso não comercial da sua obra. Não comercial significa não ter como objetivo principal obter vantagem comercial ou compensação monetária. ND Não são permitidas obras derivadas ou adaptações da sua obra. Consulte
Replies
0
Boosts
0
Views
24
Activity
1d
Websites and apps are slow with voiceover
Every time I go onto an app or website, it is very slow and sometimes unresponsive. I have to close the app and reopen it several times just to get what I need done. Please fix this bug right away?
Replies
0
Boosts
0
Views
44
Activity
2d
next gen Voice Control
Given the new Voice Control natural language enhancements, is there any change in guidance for how developers use accessibilitylnputLabels? Does providing robust utterance coverage across our views still help tune the new system's NLU?
Replies
3
Boosts
1
Views
113
Activity
2d
Apple Accessibility Team
I have been trying for 7 months to speak to someone at Apple about their accessibility work for my job as assistive technology advisor. I haven’t been able to speak to anyone regarding this despite emailing a number of different departments and people at Apple. Other tech firms have been happy to become involved, can anyone help?
Replies
7
Boosts
1
Views
140
Activity
3d
AssistiveTouch Screenshot Option Not Working
After updating to the iOS 26 Beta version, the screenshot option within the AssistiveTouch menu has stopped working. Tapping on the "Screenshot" icon does not perform any action.
Replies
1
Boosts
0
Views
286
Activity
3d
FaceTime API for sign language interpretation app devs
Hello, I'm having a very hard time finding where any documentation or session or any WWDC related announcement related to the FaceTime API that was mentioned in this press release last month. https://www.apple.com/newsroom/2026/05/apple-unveils-new-accessibility-features-and-updates-with-apple-intelligence/ "For sign language interpretation app developers, a new API supports users in adding a human interpreter to an ongoing FaceTime video call." Can anyone please point me in the right direction? I have searched everywhere in Developer.app, documentation released during this WWDC, and here in the Forums and have yet to find anything.
Replies
0
Boosts
0
Views
93
Activity
3d
The default voiceover
The default VoiceOver behavior is to start at the toolbar and work its way down. In some cases, this feels unintuitive to me. One example - my app persists which Tab you were last on across sessions. But on iOS, the tab bar is at the bottom. Sighted users have immediate context. I explored trying to insert a VO bit on load to announce which Tab is active, but that didn't work well and would sometimes clash with other VoiceOver elements. Any guidance here? I'm not a VoiceOver user, so please let me know if I'm trying to change a default AX behavior that shouldn't be messed with. But I want to make sure a VO user has the right context of where they're being dropped into.
Replies
1
Boosts
0
Views
67
Activity
3d
Fallas de conexión y perdida de datos
Falla de enlace con apple watch estando blueetooth y wifi activados reloj quedando en bucle de inicio, iphone con perdida de enlace airpord s brillo baja o sube VM virtal
Replies
0
Boosts
0
Views
44
Activity
3d
Fullscreen Detection
Hi, I want to detect if there is a fullscreen window on each screen. _AXUIElementGetWindow and kAXFullscreenAttribute methods work, but I have to be in a non-sandbox environment to use them. Is there any other way that also works? I don't think it's enough to judge if it's fullscreen by comparing the window size to the screen size, since it doesn't work on MacBook with notch, or the menu bar is set to 'auto-hide'. Thanks.
Replies
14
Boosts
1
Views
2.2k
Activity
4d
overriding default VoiceOver ordering
The default VoiceOver behavior is to start at the toolbar and work its way down. In some cases, this feels unintuitive to me. One example - my app persists which Tab you were last on across sessions. But on iOS, the tab bar is at the bottom. Sighted users have immediate context. I explored trying to insert a VO bit on load to announce which Tab is active, but that didn't work well and would sometimes clash with other VoiceOver elements. Any guidance here? I'm not a VoiceOver user, so please let me know if I'm trying to change a default AX behavior that shouldn't be messed with. But I want to make sure a VO user has the right context of where they're being dropped into.
Replies
1
Boosts
0
Views
97
Activity
4d
VoiceOver voices not included by default
Up to iOS 18 there were many voices available on device by default including "Nicky" that I use in my app. Somewhere around iOS 18.6 or 26.0 these voices were removed and no longer included in the OS by default. This broke my app that counted on the Nicky voice being available. My only workaround is to direct my users to download the voice again by going to Accessibility > VoiceOver > Speech > Voices and downloading "Nicky". I cannot simply switch to using Samantha (the only voice that is still available by default) because I have heavily customized how IPA pronunciations are tweaked to make Nicky speak Old English correctly. I tried briefly with Samantha but the results were not as good. I have 2 questions: Is there any way for me to include the "Nicky" voice in my app or for me to trigger the download from the app so I don't have to show an error and direct users through the settings app to get the voice? Are there any new features with AI voices in iOS 27 that I can use with IPA pronunciations to get them to speak possibly better than the Nicky voice? FB17834189
Replies
1
Boosts
2
Views
101
Activity
4d
Recommended practice for VoiceOver accessibility label aggregation in UIKit (SwiftUI .combine equivalent)
We are seeking guidance on the Apple-recommended way to handle aggregated accessibility labels in UIKit. When grouping elements into a single accessibility container, we need VoiceOver to read their labels with a natural structural pause, without injecting conversational grammar. SwiftUI handles this automatically and gracefully with .combine, but we need the endorsed UIKit equivalent for complex custom views. The Problem When manually aggregating child labels into a parent's accessibilityLabel in UIKit, VoiceOver behaves inconsistently in non-Latin scripts. For example, if we simply join the strings with a Latin comma (", "), VoiceOver ignores the separator in languages like Arabic or Japanese, reading the aggregated labels as a confusing run-on sentence. What we have considered and tried: NSListFormatter: While it correctly localizes separators, it inappropriately injects list grammar (e.g., adding "and" before the final item). Since our UI elements are merely spatially grouped on the screen and do not form a grammatical sentence, this confuses users. Hardcoded punctuation (e.g., Latin commas): Works fine for English, but fails to trigger VoiceOver pauses in non-Latin scripts as mentioned above. Double Line Break (\n\n): We found that joining strings with a double line break universally forces a hard stop and structural pause across all languages without injecting grammar. However, we have received community feedback suggesting that using newlines might cause poor formatting or UX issues on Braille displays. Our Questions: Is there an Apple-endorsed native approach to replicate SwiftUI's .combine behavior in UIKit that avoids injecting conversational grammar? If we must join the strings manually, is using a double line break (\n\n) considered safe and acceptable for Braille display users? Or is it better practice to manually map and apply localized commas? Any guidance from the Accessibility Technologies team or developers who have tackled this in large-scale UIKit apps would be greatly appreciated. Thank you!
Replies
2
Boosts
0
Views
82
Activity
4d
Accessibility & Games (any platform)
For games that share a common codebase with multiple targets, what would be the recommended way to handle accessibility? For example an iOS game with a WatchOS companion that can played standalone. Any word how Voice Control will affect this combination? For iOS 26, I've had to handle some aspects of accessibility separately and needed to separate out some of shared codebase into each target.
Replies
2
Boosts
0
Views
82
Activity
4d
adjusting navigationTitle based on dynamic type size
I've found myself chasing my tail trying to programmatically adjust my .navigationTitle in SwiftUI so it doesn't get truncated given various dynamic type classes mixed with various device widths... Any guidance here on how to think about adjusting Ul copy based on AX type size constraints?
Replies
4
Boosts
0
Views
91
Activity
4d
Do you recommend using the same label for Voice Over and Voice Control for icon buttons?
For example, our app uses an info icon in many places to open modals that explain useful terms or provide disclosures. For Voice Control it feels most natural to have users trigger it with a label like "info" as that matches the icon on-screen but for Voice Over "info" sometimes feels too vague and something like "Open terms to know" would provide more context. Is this just a good example of the use-case for accessibilityInputLabels so that we can have a more descriptive value for Voice Over and also provide a more natural label for Voice Control? Or should we re-think how to label these in a way that is consistent for both technologies?
Replies
2
Boosts
0
Views
96
Activity
4d