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

AppleLanguages not taking effect after app restart (sometimes)
Hi, I'm calling UserDefaults.standard.setValue(["ru"], forKey: "AppleLanguages") to change the app language with my GUI, and then I ask the user to restart the app so the change will take effect. The problem is sometimes, after setting the AppleLanguages UserDefaults, and restarting the app, nothing changes, and the app Locale.current.identifier stays the same. Most of the time it works, but when it doesn't, I have to set the value and restart the app multiple times before it finally changes the language. I have no idea what the problem is related to since it appeared in one of the versions and nothing changed in the part of setting the language. i've tried calling UserDefaults.standard.set instead of UserDefaults.standard.setValue, or calling synchronize(), but nothing worked. Any help will be appreciated.
2
0
2.3k
Oct ’22
I am working with VoiceOver and an external keyboard. I need to detect when an user activates an element using keyboard or tap.
I am working with VoiceOver and an external keyboard. I need to detect when an user activates an element using keyboard or tap. To achieve this, I have implemented: public override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) { guard let key = presses.first?.key else { return } switch key.keyCode { case .keyboardSpacebar: addSelectedTraits() default: super.pressesEnded(presses, with: event) } } The problem is that the space bar is not triggering this function as any other keys do. What could be the problem? Notice that I have activated the full access keyboard on my iPhone, this makes the space bar able to perform activation actions.
1
0
840
Nov ’22
VoiceOver and currency - high amounts
I’ve noticed that the VoiceOver reads currency amounts correctly when they are below thousand. Then, for higher amounts, for example 12.225,34 € VoiceOver reads ‘twelve point two two five thirty four euros’ If the amount is formatted without the thousand separator (12225,34 €) this problem doesn’t exist. (VO reads twelve thousand two hundred and twenty five euros and thirty four cents) Why is the thousand separator a problem for VoiceOver if this formatting is coming from the currency and locale? This issue exists in English. I changed my device language to Italian and German and in both cases the number was read correctly even with the separator. Is there a way to make it work in English?
4
1
2.5k
Jun ’25
How is CGRequestPostEventAccess supposed to work?
I can't find any documentation on CGRequestPostEventAccess or its friend CGRequestListenEventAccess, except for the API declarations in CGEvent.h. The fact that it returns a boolean and doesn't have a completion callback or anything like that suggests that it should be synchronous, i.e., not return until the user has decided to grant or deny permission. Experimentally, that doesn't seem to be the case, but then what does the return value mean?
3
0
1.3k
Dec ’22
LocalizedStringResource with Formatter
I am trying to use DateComponentsFormatter() with my AppIntent, but I can not find a way to localize the formatter string with the same language that LocalizedStringResource use... Example (My App: Arabic, Device: English, Siri: English) let formatter = DateComponentsFormatter()     formatter.unitsStyle = .full     formatter.maximumUnitCount = 2     formatter.allowedUnits = [.hour, .minute]     formatter.includesTimeRemainingPhrase = true let relativeDate = formatter.string(from: .now, to: nextEvent.date) ?? ""      return .result(             value: value,             dialog: "intent_current_event\(relativeDate)"           ) The result is: Next event متبقي 4 ساعات و 5 دقائق The relativeDate is in Arabic (App Language) and the "intent_current_event%@" localized in English (Siri Language) Can anyone please help me to use the Formatter and get it to localized the same local as LocalizedStringResource.
3
0
2.0k
Dec ’22
How to check if the Live Captions (beats) feature is enabled on the phone.
Is there a way to programmatically detect if the Live Captions feature is enabled in the accessibility settings? I'm working on an app that delivers spoken tests to people. When that feature is on we are not able to reliably verify people's understanding of speech as the audio is transcribed to text. I checked the accessibility doc but didn't find anything that fits. https://developer.apple.com/documentation/uikit/1615112-uiaccessibilityisclosedcaptionin?language=objc
1
0
769
Jan ’23
App crash on launch only in Ireland
The App review said that our App crashed on launch in Cork, Ireland. When they tested it in the U.S., it works well. We also don't have any problem testing it using TestFlight in Taiwan. We've tried to VPN to Ireland and open the app from TestFlight but it still works well. Does anyone have this regional problem or know how to reproduce it? Development environment The app is developed by React Native (version 0.70.5), using the Expo framework (Expo SDK 47)
5
0
1.1k
Apr ’23
MeasurementFormatter unitStyle .long provides a .short string for UnitConcentrationMass
The MeasurementFormatter with .long unit style provides a .short string. See example below. This is needed for accessibility support. let formatter = MeasurementFormatter() formatter.unitStyle = .long formatter.unitOptions = .providedUnit let concentrationMass = Measurement(value: 2, unit: .gramsPerLiter) print(formatter.string(from: concentrationMass)) // Results in "2 g/L". Expected "2 grams per liter".
2
0
721
Jan ’23
¿How do I make Siri announce the local currency on notifications?
I'm currently testing the announce notifications feature and I can't seem to find out how to make Siri read aloud the current currency instead of dollars. My locale is es-CL (Chile). It uses the currency symbol $ and reads as Pesos locally or Chilean Pesos where the number 5000.1 is represented as 5.000,1 This is the notification content         let content = UNMutableNotificationContent()         content.body = "¡Has recibido un pago por $5.000!" Siri reads it aloud as "¡Has recibido un pago por 5.000 Dolares!" which translates to "You have received a payment for 5,000 Dollars", instead of the expected "¡Has recibido un pago por 5.000 Pesos!" -> "You have received a payment for 5,000 Pesos" I've tried changing the development region of the app, interpolating the string with NumberFormatter.localizedString(from: 5000, number: .currency), and with others styles( .currencyAccounting, .currencyISOCode and .currencyPlural) without good results. The last one seems to work buts it's not ideal since it outputs "5.000 pesos chilenos" which gets read as "5 pesos chilenos" which is not the correct amount (bug), it's as is you're not on Chile and I personally prefer it to be a symbol instead of words. I'm testing with my device which is setup with the region "Chile" Could someone help me find a solution?
5
1
1.4k
Feb ’25
Why would event tap creation fail?
On my Mac (running Ventura), so long as my app is granted accessibility permission in System Settings > Privacy & Security > Accessibility, I am able to create a global event tap like so: CFMachPortRef thePort = CGEventTapCreate( kCGAnnotatedSessionEventTap, kCGTailAppendEventTap, kCGEventTapOptionDefault, // active filter CGEventMaskBit(kCGEventKeyDown), CTapListener::MyTapCallback, NULL ); But on a user's computer, also running Ventura, the CGEventTapCreate call is apparently returning NULL, even though he's showing me a screen shot of the accessibility permission being turned on. Any ideas what I could be missing, or how to debug it?
0
0
1.2k
Jan ’23
Where can i find Accessibility Client APIs?
I have been looking for documentation on developing an accessibility client but had little to no luck finding anything useful. Can someone let me know where I can find those? Is it possible to call from Swift, or are they only for Obj-c? I have found this, but given it is on v0.3 and the looks of the repository, I didn't feel confident that it can deliver what I need: https://github.com/tmandry/AXSwift PS: I want to develop a feature like Grammarly's panel to show a panel based on the client's interaction and text marker point on the screen.
2
0
790
Mar ’23
Metadata Localization
Which English metadata will you see if you are in another country where English is not the first language? For instance, if you are in Mexico and have iPhone with an en-US setting, will you see metadata that we create for en-US or for en-GB or any other English language? Do we have any articles detailing this? (Assuming that Mexico is registered with App Store Connect as a country of service provision.) And also if you are in Mexico and have iPhone with es-MX (Latam Spanish) setting, but the app doesn't provide es-MX metadata, what will you see on App Store? Is the Spanish metadata automatically translated into es-MX? (Assuming that Mexico is registered on App Store Connect as a country of service provision.)
1
0
577
Mar ’23
iOS Accessibility - Direct Interaction for Keyboards in accessibility mode
Hello all, I am creating an app with the accessibility mode support for an iPad device. I have a requirement where user needs to switch to a particular view and the user is allowed to draw in that area as well as pass keyboard key inputs to the view.

When VoiceOver is on, all the touch and keyboard inputs are being captured by Accessibility engine and these events are not received in the app. As per my requirement I need to capture the keyboard key inputs as well as touch events for the view. For receiving the touch inputs directly in the app I am using “UIAccessibilityTraitAllowsDirectInteraction” and it works fine, but the keyboard doesn’t. My query is : is there anything available like “UIAccessibilityTraitAllowsDirectInteraction” for keyboards in accessibility/ VoiceOver mode? Or is there a way if I can disable the accessibility/ VoiceOver for a particular view in a ViewController when the accessibility mode is on for the iPad device?
 Any help would be appreciated!
2
0
995
Mar ’23
Issues with Apple's Accessibility Plugin for Unity
As the developer of an app for Unity, I am writing to express my concerns regarding the functionality of Apple's Accessibility Plugin for Unity. Despite following the instructions outlined in the tutorial on the official website (https://developer.apple.com/videos/play/wwdc2022/10151/), I have been unable to use the plugin effectively. Firstly, I am encountering issues with the installation of the plugin. After I git cloned the GitHub repository, I placed it in the project's root folder. But, nevertheless, the importation failed wherever I placed the repository. So I tried to do it manually, I have extracted the .tar files, renamed them to "com.apple.", and placed them in the 'Packages' folder. However, I am uncertain if I have correctly imported the plugin or if there are additional steps I need to take to properly install it. Secondly, after attempting to use the plugin, I've came across some issues that are preventing me from making my app accessible. Specifically, the plugin is not allowing consistent clicks on UI elements, and the VoiceOver highlight often appears in the wrong location, which can make it difficult to navigate the interface effectively. Additionally, there are audio-related issues, such as distortion and other audio-related problems. As a developer, I understand the importance of accessibility for all users, and I strive to make my apps as inclusive as possible. Therefore, I request your support in bringing this matter to the attention of the relevant authorities or teams at Apple, so that they can take necessary measures to address these issues and provide clear instructions on the installation and usage of the plugin. Thank you for your time and attention to this matter. Sincerely, André Chrisostomo
1
1
930
Apr ’23
Live Captions
The live captions can (almost) perfectly pick up on my voice, but cannot pick up other people’s voices (even when i am next to them) and i was wondering if you could adjust it so it can pick up on other people’s hearing better.
Replies
1
Boosts
1
Views
734
Activity
Oct ’22
AppleLanguages not taking effect after app restart (sometimes)
Hi, I'm calling UserDefaults.standard.setValue(["ru"], forKey: "AppleLanguages") to change the app language with my GUI, and then I ask the user to restart the app so the change will take effect. The problem is sometimes, after setting the AppleLanguages UserDefaults, and restarting the app, nothing changes, and the app Locale.current.identifier stays the same. Most of the time it works, but when it doesn't, I have to set the value and restart the app multiple times before it finally changes the language. I have no idea what the problem is related to since it appeared in one of the versions and nothing changed in the part of setting the language. i've tried calling UserDefaults.standard.set instead of UserDefaults.standard.setValue, or calling synchronize(), but nothing worked. Any help will be appreciated.
Replies
2
Boosts
0
Views
2.3k
Activity
Oct ’22
I am working with VoiceOver and an external keyboard. I need to detect when an user activates an element using keyboard or tap.
I am working with VoiceOver and an external keyboard. I need to detect when an user activates an element using keyboard or tap. To achieve this, I have implemented: public override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) { guard let key = presses.first?.key else { return } switch key.keyCode { case .keyboardSpacebar: addSelectedTraits() default: super.pressesEnded(presses, with: event) } } The problem is that the space bar is not triggering this function as any other keys do. What could be the problem? Notice that I have activated the full access keyboard on my iPhone, this makes the space bar able to perform activation actions.
Replies
1
Boosts
0
Views
840
Activity
Nov ’22
Voice Control > "Show me numbers" with web development
Our build is showing numbers for non-interactive elements, like <span> or <h2> elements. I read in Apple's Voice Control 2019 technical brief that item numbers should assign numbers to clickable or tappable items. Are we doing something wrong in our code or is Voice Control inconsistent in how it assigns item numbers?
Replies
4
Boosts
2
Views
1.4k
Activity
Dec ’22
VoiceOver and currency - high amounts
I’ve noticed that the VoiceOver reads currency amounts correctly when they are below thousand. Then, for higher amounts, for example 12.225,34 € VoiceOver reads ‘twelve point two two five thirty four euros’ If the amount is formatted without the thousand separator (12225,34 €) this problem doesn’t exist. (VO reads twelve thousand two hundred and twenty five euros and thirty four cents) Why is the thousand separator a problem for VoiceOver if this formatting is coming from the currency and locale? This issue exists in English. I changed my device language to Italian and German and in both cases the number was read correctly even with the separator. Is there a way to make it work in English?
Replies
4
Boosts
1
Views
2.5k
Activity
Jun ’25
How is CGRequestPostEventAccess supposed to work?
I can't find any documentation on CGRequestPostEventAccess or its friend CGRequestListenEventAccess, except for the API declarations in CGEvent.h. The fact that it returns a boolean and doesn't have a completion callback or anything like that suggests that it should be synchronous, i.e., not return until the user has decided to grant or deny permission. Experimentally, that doesn't seem to be the case, but then what does the return value mean?
Replies
3
Boosts
0
Views
1.3k
Activity
Dec ’22
LocalizedStringResource with Formatter
I am trying to use DateComponentsFormatter() with my AppIntent, but I can not find a way to localize the formatter string with the same language that LocalizedStringResource use... Example (My App: Arabic, Device: English, Siri: English) let formatter = DateComponentsFormatter()     formatter.unitsStyle = .full     formatter.maximumUnitCount = 2     formatter.allowedUnits = [.hour, .minute]     formatter.includesTimeRemainingPhrase = true let relativeDate = formatter.string(from: .now, to: nextEvent.date) ?? ""      return .result(             value: value,             dialog: "intent_current_event\(relativeDate)"           ) The result is: Next event متبقي 4 ساعات و 5 دقائق The relativeDate is in Arabic (App Language) and the "intent_current_event%@" localized in English (Siri Language) Can anyone please help me to use the Formatter and get it to localized the same local as LocalizedStringResource.
Replies
3
Boosts
0
Views
2.0k
Activity
Dec ’22
How to check if the Live Captions (beats) feature is enabled on the phone.
Is there a way to programmatically detect if the Live Captions feature is enabled in the accessibility settings? I'm working on an app that delivers spoken tests to people. When that feature is on we are not able to reliably verify people's understanding of speech as the audio is transcribed to text. I checked the accessibility doc but didn't find anything that fits. https://developer.apple.com/documentation/uikit/1615112-uiaccessibilityisclosedcaptionin?language=objc
Replies
1
Boosts
0
Views
769
Activity
Jan ’23
App crash on launch only in Ireland
The App review said that our App crashed on launch in Cork, Ireland. When they tested it in the U.S., it works well. We also don't have any problem testing it using TestFlight in Taiwan. We've tried to VPN to Ireland and open the app from TestFlight but it still works well. Does anyone have this regional problem or know how to reproduce it? Development environment The app is developed by React Native (version 0.70.5), using the Expo framework (Expo SDK 47)
Replies
5
Boosts
0
Views
1.1k
Activity
Apr ’23
MeasurementFormatter unitStyle .long provides a .short string for UnitConcentrationMass
The MeasurementFormatter with .long unit style provides a .short string. See example below. This is needed for accessibility support. let formatter = MeasurementFormatter() formatter.unitStyle = .long formatter.unitOptions = .providedUnit let concentrationMass = Measurement(value: 2, unit: .gramsPerLiter) print(formatter.string(from: concentrationMass)) // Results in "2 g/L". Expected "2 grams per liter".
Replies
2
Boosts
0
Views
721
Activity
Jan ’23
¿How do I make Siri announce the local currency on notifications?
I'm currently testing the announce notifications feature and I can't seem to find out how to make Siri read aloud the current currency instead of dollars. My locale is es-CL (Chile). It uses the currency symbol $ and reads as Pesos locally or Chilean Pesos where the number 5000.1 is represented as 5.000,1 This is the notification content         let content = UNMutableNotificationContent()         content.body = "¡Has recibido un pago por $5.000!" Siri reads it aloud as "¡Has recibido un pago por 5.000 Dolares!" which translates to "You have received a payment for 5,000 Dollars", instead of the expected "¡Has recibido un pago por 5.000 Pesos!" -> "You have received a payment for 5,000 Pesos" I've tried changing the development region of the app, interpolating the string with NumberFormatter.localizedString(from: 5000, number: .currency), and with others styles( .currencyAccounting, .currencyISOCode and .currencyPlural) without good results. The last one seems to work buts it's not ideal since it outputs "5.000 pesos chilenos" which gets read as "5 pesos chilenos" which is not the correct amount (bug), it's as is you're not on Chile and I personally prefer it to be a symbol instead of words. I'm testing with my device which is setup with the region "Chile" Could someone help me find a solution?
Replies
5
Boosts
1
Views
1.4k
Activity
Feb ’25
Localization.string file error for Xcode 14.1
I am trying to edit my Localization.string file. I want to add few more key value pairs. But after it when I run my code it is giving me no -inputencoding specified and could not detect encoding from input file error for Share Extension. Please help out for fix for this.
Replies
1
Boosts
0
Views
960
Activity
Jan ’23
Why would event tap creation fail?
On my Mac (running Ventura), so long as my app is granted accessibility permission in System Settings > Privacy & Security > Accessibility, I am able to create a global event tap like so: CFMachPortRef thePort = CGEventTapCreate( kCGAnnotatedSessionEventTap, kCGTailAppendEventTap, kCGEventTapOptionDefault, // active filter CGEventMaskBit(kCGEventKeyDown), CTapListener::MyTapCallback, NULL ); But on a user's computer, also running Ventura, the CGEventTapCreate call is apparently returning NULL, even though he's showing me a screen shot of the accessibility permission being turned on. Any ideas what I could be missing, or how to debug it?
Replies
0
Boosts
0
Views
1.2k
Activity
Jan ’23
Error 400 when I try to change my country
The error Bad Message 400 is on my iPhone screen when I try to access my country/ region. And I need change to download a app
Replies
1
Boosts
0
Views
726
Activity
Jan ’23
Asking Permission to Use Notifications Message
Hello ; I have to translate this message but there is not any key in infoplist also targets info. it doesnt change when I add a key in the Info.plist or Infoplist.string. How can I translate it ?
Replies
1
Boosts
0
Views
831
Activity
Jan ’23
Where can i find Accessibility Client APIs?
I have been looking for documentation on developing an accessibility client but had little to no luck finding anything useful. Can someone let me know where I can find those? Is it possible to call from Swift, or are they only for Obj-c? I have found this, but given it is on v0.3 and the looks of the repository, I didn't feel confident that it can deliver what I need: https://github.com/tmandry/AXSwift PS: I want to develop a feature like Grammarly's panel to show a panel based on the client's interaction and text marker point on the screen.
Replies
2
Boosts
0
Views
790
Activity
Mar ’23
Metadata Localization
Which English metadata will you see if you are in another country where English is not the first language? For instance, if you are in Mexico and have iPhone with an en-US setting, will you see metadata that we create for en-US or for en-GB or any other English language? Do we have any articles detailing this? (Assuming that Mexico is registered with App Store Connect as a country of service provision.) And also if you are in Mexico and have iPhone with es-MX (Latam Spanish) setting, but the app doesn't provide es-MX metadata, what will you see on App Store? Is the Spanish metadata automatically translated into es-MX? (Assuming that Mexico is registered on App Store Connect as a country of service provision.)
Replies
1
Boosts
0
Views
577
Activity
Mar ’23
Ionic Capacitor InApp Browser
Good morning, I'm developing an app using ionic+capacitor techs and I'm trying to make deep links work on the in-app browser but have had no success. Can anyone please help me with this? Please.
Replies
0
Boosts
0
Views
723
Activity
Mar ’23
iOS Accessibility - Direct Interaction for Keyboards in accessibility mode
Hello all, I am creating an app with the accessibility mode support for an iPad device. I have a requirement where user needs to switch to a particular view and the user is allowed to draw in that area as well as pass keyboard key inputs to the view.

When VoiceOver is on, all the touch and keyboard inputs are being captured by Accessibility engine and these events are not received in the app. As per my requirement I need to capture the keyboard key inputs as well as touch events for the view. For receiving the touch inputs directly in the app I am using “UIAccessibilityTraitAllowsDirectInteraction” and it works fine, but the keyboard doesn’t. My query is : is there anything available like “UIAccessibilityTraitAllowsDirectInteraction” for keyboards in accessibility/ VoiceOver mode? Or is there a way if I can disable the accessibility/ VoiceOver for a particular view in a ViewController when the accessibility mode is on for the iPad device?
 Any help would be appreciated!
Replies
2
Boosts
0
Views
995
Activity
Mar ’23
Issues with Apple's Accessibility Plugin for Unity
As the developer of an app for Unity, I am writing to express my concerns regarding the functionality of Apple's Accessibility Plugin for Unity. Despite following the instructions outlined in the tutorial on the official website (https://developer.apple.com/videos/play/wwdc2022/10151/), I have been unable to use the plugin effectively. Firstly, I am encountering issues with the installation of the plugin. After I git cloned the GitHub repository, I placed it in the project's root folder. But, nevertheless, the importation failed wherever I placed the repository. So I tried to do it manually, I have extracted the .tar files, renamed them to "com.apple.", and placed them in the 'Packages' folder. However, I am uncertain if I have correctly imported the plugin or if there are additional steps I need to take to properly install it. Secondly, after attempting to use the plugin, I've came across some issues that are preventing me from making my app accessible. Specifically, the plugin is not allowing consistent clicks on UI elements, and the VoiceOver highlight often appears in the wrong location, which can make it difficult to navigate the interface effectively. Additionally, there are audio-related issues, such as distortion and other audio-related problems. As a developer, I understand the importance of accessibility for all users, and I strive to make my apps as inclusive as possible. Therefore, I request your support in bringing this matter to the attention of the relevant authorities or teams at Apple, so that they can take necessary measures to address these issues and provide clear instructions on the installation and usage of the plugin. Thank you for your time and attention to this matter. Sincerely, André Chrisostomo
Replies
1
Boosts
1
Views
930
Activity
Apr ’23