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

Accessible label for braille devices
Hello, I want to improve UX for users who uses braille devices. I am using accessibilityLabel in SwiftUI to show information for blind users but I want to give a better experience for braille users using special characters like a block in braille to draw simple figures. Those characters cannot be spoken by TextToSpeech and that is the reason that I need an alternative of accessibilityLabel only for braille devices. Is this possible in UIKit, AppKit or SwiftUI? I preffer using SwiftUI but I will use anything to get this. Thanks in advance
0
0
559
Apr ’23
An Idea! Kids Mode | Safe Mode | Guest User
I have an idea for my need. I have small children. Sometimes they want to take my phone and play or watch cartoons. Sometimes they take my phone with or without my permission. They install apps, mess with my phone and delete important files or make purchases. Afterwards, I am dealing with canceling this purchase and deleting the applications. I'm sure this happens to everyone. Whereas, if Apple defines two login passwords, they can open only allowed applications and access allowed processes at the 2nd level while fully authorized login at 1 level. (You can't install apps without purchasing permission, for example, only youtube kids app and logo game, nothing else on the screen.) When my spouse, friend, or a second person picks up or requests the phone for some reason, have level 2 access. When I give my phone to the service, it can't access my private information, it only has a 2nd level login. There are so many examples that the level 2 user need is unbelievable. This feature should definitely be apple in my opinion. If you agree, if you need this feature, leave a comment or share. Get attention. Kids Mode | Safe Mode | Guest User
2
0
521
Apr ’23
How to find iOS's Show Lowercase Keys value
In the iOS system prefs->Accessibility->Keyboards, there's the switch for "Show Lowercase Keys", which allows keyboards to show upper- and lower-case key caps. I can't find any mention of an accessor for that value. It doesn't show in NSUserDefaults when I dump them, nor does any header mention it. I'd like to be able to use it in my custom keyboard extension.
3
0
919
Apr ’23
Using stringsdict to manage plurals in AppIntents
Hi there, I'm currently adding AppIntents to my iOS app, using TypeDisplayRepresentation to identify each entity. I'm following the example provided in the docs for the name and numericFormat strings, and I have an accompanying stringsdict file of the same format as the example. This works perfectly in the name of the actions, equivalent to Find Books/All Books, but now within my app anywhere the key value is used (in this example, the string "Book"), %#@VARIABLE@ is literally substituted in. I think the issue is I'm not sure how to handle a NSStringLocalizedFormatKey which is just a single word. Should I be defining the strings differently within my SwiftUI views to fix this, or is there a problem in my stringsdict file? Thank you!
2
0
1k
Apr ’23
AppIntents and bool localization
Hi, I've implemented my App Intent that asks for an int and then for a boolean with requestDisambiguation. If I use [true, false] Siri doesn't translate to other languages automatically, just asks for true or false, no matter what the system language is. let providedValue2 = try await $myval.requestDisambiguation(among: [true, false], dialog: "") If I translate the values as strings it works perfectly by interacting with the screen but, with voice, Siri enter in an infinite loop with requestDisambiguation... let restrue = NSLocalizedString("BoolLocalize", comment: "") let resfalse = NSLocalizedString("BoolLocalize2", comment: "") let providedValue2 = try await $myval.requestDisambiguation(among: [restrue, resfalse], dialog: "") var providedBool = false if providedValue2 == restrue { providedBool = true } ... Can it be a bug or am I doing something wrong? Thanks
0
0
787
Apr ’23
iOS: Automation can't read an element with accessibilityIdentifier when isAccessibilityElement is set
Let's say we have UIView and it contains two UILabels. For automation test to access one of the label, we've set accessibilityIdentifier to one of the label. Now, we want to support VoiceOver on our app. I've set isAccessibilityElement to true to VoiceOver. VoiceOver works well but the automation test is failing and saying, he can't identify the label with the accessibilityIdentifier. I believe there is a way for automation test and VoiceOver to coexist. Is there a way, we can work around this? I tried something like this. (isAccessibilityElement = false) isAccessibilityElement = false var elements = [Any]() let accessibilityElement = UIAccessibilityElement(accessibilityContainer: self) accessibilityElement.accessibilityHint = "VoiceOver, read this" accessibilityElement.accessibilityFrameInContainerSpace = bounds elements.append(accessibilityElement) elements.append(label1) elements.append(label2) accessibilityElements = elements --- private let label1 = { let label = UILabel() label.text = "label1" label.accessibilityIdentifier = "label1" return label }()
0
0
629
Apr ’23
New keyboard
As a classical Arabic, student, learning the Arabic lanaguage, using the English keyboard is a big part of our journey. I hope Apple, can add a keyboard that is English(Arabic), because using the English alphabet is a big part of us students, learning the foreign language for pronunciation and writting/reading skills. Thankyou for considering!
1
0
951
May ’23
AVSpeechSynthesizer Leaking Like a Sieve
I've found multiple leaks in AVSpeechSynthesizer which are plaguing my users. My users are complaining of crashes due to this. Ive created a feedback item (FB12212129) with a sample project attached which demonstrates one of the leaks. I'm hoping an engineer notices this. The only way ive hade my feedback noticed in the past is by both creating a feedback item AND posting on the forums. So here's my forum post. Help is much appreciated!
6
5
4k
Oct ’23
Info.Plist localized issue
when I submit my product recently, I meet the below issue from Apple, but such product before already submit successfully and my xxx-Info.plist and InfoPlist.strings are matched, but why happen The “NSContactsUsageDescription” value for the NSContactsUsageDescription key isn’t allowed in “xxx.app”? any rule changed recently? thanks for your help! App Store Connect Dear Developer, We identified one or more issues with a recent delivery for your app, 1.0.25 (84). Your delivery was successful, but you may wish to correct the following issues in your next delivery: ITMS-90738: Invalid purpose string value - The “NSContactsUsageDescription” value for the NSContactsUsageDescription key isn’t allowed in “xxx.app”. Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “xxx.app” bundle should contain a NSContactsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. For details, visit: https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources. ITMS-90738: Invalid purpose string value - The “NSCameraUsageDescription” value for the NSCameraUsageDescription key isn’t allowed in “xxx.app”. Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “xxx.app” bundle should contain a NSCameraUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. For details, visit: https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources. ITMS-90738: Invalid purpose string value - The “NSSpeechRecognitionUsageDescription” value for the NSSpeechRecognitionUsageDescription key isn’t allowed in “xxx.app”. Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “xxx.app” bundle should contain a NSSpeechRecognitionUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. For details, visit: https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources. After you’ve corrected the issues, you can upload a new binary to App Store Connect.
1
0
2.7k
Jun ’23
Accessibility API for Math Expression on iOS
My app have raw MathML expression that I'd like to pass to iOS Accessibility framework, so ideally user can use rotor to change granularity when using VoiceOver (such as small/medium/large expressions) to navigate within the equation. This example shows the experience that I am aiming for in Apple Books: https://www.perkins.org/resource/how-read-math-expressions-voiceover-ios-device/. However, I couldn't find what's the best way to expose the raw MathML expression to the accessibility framework. AFAIK, the only way to pass accessibility information to iOS Accessibility framework is by setting the attributes, including label, value, traits, hint, etc. But by experimenting with them, I couldn't get VoiceView to allow the small/medium/large expressions in the rotor. Is there a way to pass raw MathML expression to iOS accessibility framework? Thanks.
1
0
423
Jun ’23
Regarding accessibilityTraits isToggle
Hello. In order to test how VoiceOver treat isToggle accessibilityTraits, I created simple code. I did not use Toggle View, because of test purposes. By the way, I have a question. Once I applied isToggle, VoiceOver just says swich button. Switch means is toggle, we have to provide state information such as on or off. So I thought that to provide state information, such as on or off, I should use accessibilityValue. But even if I applied accessibilityValue, VoiceOver does not read the value, just speak swich button. How to provide on or off state with accessibilityTraits isToggle? Thank you.
1
1
558
Jun ’23
Easy and lightweight translation editing
I have some .strings file for translation in my app and it turns out one of them is pretty bad. I have a new translator and I'm looking to make the process as easy for him as possible. Ideally, he would have just one file with my original english translation on the right, and the corresponding chinese translation on the right, making him easily be able to edit if necessary. The issue I see here is that is to create that file and then rebuild the .strings file. Is it possible? How would you do it? Best
2
1
1.3k
Jun ’23
Assistive Access issues
We have several issues enabling our app for Assistive Access: We use Critical Alerts. There seems to be no way to set this up unless we set up the app in "normal" mode first. If we run our app in AA first and then go back to normal the Notification settings page is blank. Notifications show up as saying "New". I am guessing this is a beta issue? We cannot use NFC (no connect sheet is displayed when we try.) We MUST have NFC to connect to our medical device (as well as BlueTooth). These are show stopper issues for our app.
2
0
1.4k
Jun ’23
Accessible label for braille devices
Hello, I want to improve UX for users who uses braille devices. I am using accessibilityLabel in SwiftUI to show information for blind users but I want to give a better experience for braille users using special characters like a block in braille to draw simple figures. Those characters cannot be spoken by TextToSpeech and that is the reason that I need an alternative of accessibilityLabel only for braille devices. Is this possible in UIKit, AppKit or SwiftUI? I preffer using SwiftUI but I will use anything to get this. Thanks in advance
Replies
0
Boosts
0
Views
559
Activity
Apr ’23
AXIsProcessTrusted returns wrong value in osX Ventura 13.0+
So in osX Ventura (13.0+) if you quickly toggle the accessibility permission for your app, AXIsProcessTrusted returns wrong value.
Replies
9
Boosts
0
Views
1.4k
Activity
Apr ’23
An Idea! Kids Mode | Safe Mode | Guest User
I have an idea for my need. I have small children. Sometimes they want to take my phone and play or watch cartoons. Sometimes they take my phone with or without my permission. They install apps, mess with my phone and delete important files or make purchases. Afterwards, I am dealing with canceling this purchase and deleting the applications. I'm sure this happens to everyone. Whereas, if Apple defines two login passwords, they can open only allowed applications and access allowed processes at the 2nd level while fully authorized login at 1 level. (You can't install apps without purchasing permission, for example, only youtube kids app and logo game, nothing else on the screen.) When my spouse, friend, or a second person picks up or requests the phone for some reason, have level 2 access. When I give my phone to the service, it can't access my private information, it only has a 2nd level login. There are so many examples that the level 2 user need is unbelievable. This feature should definitely be apple in my opinion. If you agree, if you need this feature, leave a comment or share. Get attention. Kids Mode | Safe Mode | Guest User
Replies
2
Boosts
0
Views
521
Activity
Apr ’23
How to find iOS's Show Lowercase Keys value
In the iOS system prefs->Accessibility->Keyboards, there's the switch for "Show Lowercase Keys", which allows keyboards to show upper- and lower-case key caps. I can't find any mention of an accessor for that value. It doesn't show in NSUserDefaults when I dump them, nor does any header mention it. I'd like to be able to use it in my custom keyboard extension.
Replies
3
Boosts
0
Views
919
Activity
Apr ’23
Using stringsdict to manage plurals in AppIntents
Hi there, I'm currently adding AppIntents to my iOS app, using TypeDisplayRepresentation to identify each entity. I'm following the example provided in the docs for the name and numericFormat strings, and I have an accompanying stringsdict file of the same format as the example. This works perfectly in the name of the actions, equivalent to Find Books/All Books, but now within my app anywhere the key value is used (in this example, the string "Book"), %#@VARIABLE@ is literally substituted in. I think the issue is I'm not sure how to handle a NSStringLocalizedFormatKey which is just a single word. Should I be defining the strings differently within my SwiftUI views to fix this, or is there a problem in my stringsdict file? Thank you!
Replies
2
Boosts
0
Views
1k
Activity
Apr ’23
AppIntents and bool localization
Hi, I've implemented my App Intent that asks for an int and then for a boolean with requestDisambiguation. If I use [true, false] Siri doesn't translate to other languages automatically, just asks for true or false, no matter what the system language is. let providedValue2 = try await $myval.requestDisambiguation(among: [true, false], dialog: "") If I translate the values as strings it works perfectly by interacting with the screen but, with voice, Siri enter in an infinite loop with requestDisambiguation... let restrue = NSLocalizedString("BoolLocalize", comment: "") let resfalse = NSLocalizedString("BoolLocalize2", comment: "") let providedValue2 = try await $myval.requestDisambiguation(among: [restrue, resfalse], dialog: "") var providedBool = false if providedValue2 == restrue { providedBool = true } ... Can it be a bug or am I doing something wrong? Thanks
Replies
0
Boosts
0
Views
787
Activity
Apr ’23
iOS: Automation can't read an element with accessibilityIdentifier when isAccessibilityElement is set
Let's say we have UIView and it contains two UILabels. For automation test to access one of the label, we've set accessibilityIdentifier to one of the label. Now, we want to support VoiceOver on our app. I've set isAccessibilityElement to true to VoiceOver. VoiceOver works well but the automation test is failing and saying, he can't identify the label with the accessibilityIdentifier. I believe there is a way for automation test and VoiceOver to coexist. Is there a way, we can work around this? I tried something like this. (isAccessibilityElement = false) isAccessibilityElement = false var elements = [Any]() let accessibilityElement = UIAccessibilityElement(accessibilityContainer: self) accessibilityElement.accessibilityHint = "VoiceOver, read this" accessibilityElement.accessibilityFrameInContainerSpace = bounds elements.append(accessibilityElement) elements.append(label1) elements.append(label2) accessibilityElements = elements --- private let label1 = { let label = UILabel() label.text = "label1" label.accessibilityIdentifier = "label1" return label }()
Replies
0
Boosts
0
Views
629
Activity
Apr ’23
New keyboard
As a classical Arabic, student, learning the Arabic lanaguage, using the English keyboard is a big part of our journey. I hope Apple, can add a keyboard that is English(Arabic), because using the English alphabet is a big part of us students, learning the foreign language for pronunciation and writting/reading skills. Thankyou for considering!
Replies
1
Boosts
0
Views
951
Activity
May ’23
Workflow for translators helping with localization (xcloc) files
Much of the WWDC content (understandably so) covers how to use localized strings in code but a piece of the puzzle that's missing for me is the exported and imported .xcloc files. How do translators use and modify an exported xcloc file to provide translations? Is there a popular 3rd party software for this step?
Replies
1
Boosts
0
Views
1k
Activity
May ’23
Package localization export is broken
Steps: Create a new clean Swift package in Xcode 14.3 Add a defaultLocalization value to the package manifest Add a platform to the package manifest: platforms: [.iOS(.v16)] Run Product -> Export Localizations and the following error appears: Version 14.3 (14E222b) macOS 13.1 (22C65) Feedback FB12183400
Replies
1
Boosts
0
Views
926
Activity
Sep ’23
AVSpeechSynthesizer Leaking Like a Sieve
I've found multiple leaks in AVSpeechSynthesizer which are plaguing my users. My users are complaining of crashes due to this. Ive created a feedback item (FB12212129) with a sample project attached which demonstrates one of the leaks. I'm hoping an engineer notices this. The only way ive hade my feedback noticed in the past is by both creating a feedback item AND posting on the forums. So here's my forum post. Help is much appreciated!
Replies
6
Boosts
5
Views
4k
Activity
Oct ’23
Info.Plist localized issue
when I submit my product recently, I meet the below issue from Apple, but such product before already submit successfully and my xxx-Info.plist and InfoPlist.strings are matched, but why happen The “NSContactsUsageDescription” value for the NSContactsUsageDescription key isn’t allowed in “xxx.app”? any rule changed recently? thanks for your help! App Store Connect Dear Developer, We identified one or more issues with a recent delivery for your app, 1.0.25 (84). Your delivery was successful, but you may wish to correct the following issues in your next delivery: ITMS-90738: Invalid purpose string value - The “NSContactsUsageDescription” value for the NSContactsUsageDescription key isn’t allowed in “xxx.app”. Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “xxx.app” bundle should contain a NSContactsUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. For details, visit: https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources. ITMS-90738: Invalid purpose string value - The “NSCameraUsageDescription” value for the NSCameraUsageDescription key isn’t allowed in “xxx.app”. Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “xxx.app” bundle should contain a NSCameraUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. For details, visit: https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources. ITMS-90738: Invalid purpose string value - The “NSSpeechRecognitionUsageDescription” value for the NSSpeechRecognitionUsageDescription key isn’t allowed in “xxx.app”. Your app’s code references one or more APIs that access sensitive user data, or the app has one or more entitlements that permit such access. The Info.plist file for the “xxx.app” bundle should contain a NSSpeechRecognitionUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. For details, visit: https://developer.apple.com/documentation/uikit/protecting_the_user_s_privacy/requesting_access_to_protected_resources. After you’ve corrected the issues, you can upload a new binary to App Store Connect.
Replies
1
Boosts
0
Views
2.7k
Activity
Jun ’23
Accessibility API for Math Expression on iOS
My app have raw MathML expression that I'd like to pass to iOS Accessibility framework, so ideally user can use rotor to change granularity when using VoiceOver (such as small/medium/large expressions) to navigate within the equation. This example shows the experience that I am aiming for in Apple Books: https://www.perkins.org/resource/how-read-math-expressions-voiceover-ios-device/. However, I couldn't find what's the best way to expose the raw MathML expression to the accessibility framework. AFAIK, the only way to pass accessibility information to iOS Accessibility framework is by setting the attributes, including label, value, traits, hint, etc. But by experimenting with them, I couldn't get VoiceView to allow the small/medium/large expressions in the rotor. Is there a way to pass raw MathML expression to iOS accessibility framework? Thanks.
Replies
1
Boosts
0
Views
423
Activity
Jun ’23
Recognize people speaking on VisionOS
On VisionOS, is it possible to recognize what people are speaking nearby (and eventually writing it in the app as subtitles for example)?
Replies
0
Boosts
0
Views
442
Activity
Jun ’23
Assistive Access + Switch Control
I have iPadOS17. When I choose to "Start assistive access" I seem to lose switch control. I would have expected to see it continue to work inside the apps. I was very much looking forward to "Assistive Access" reducing the number of clicks tied to switch controlled use of messages and other apps.
Replies
3
Boosts
0
Views
900
Activity
Jun ’23
Custom Layout for Assistive Access
Is it possible yet to provide a custom layout for those using Assistive Access? I know we can provide support but what if we want to change the layout entirely?
Replies
2
Boosts
0
Views
589
Activity
Jun ’23
Mail App
Is Apple developing an assistive access mail app?
Replies
2
Boosts
0
Views
647
Activity
Jun ’23
Regarding accessibilityTraits isToggle
Hello. In order to test how VoiceOver treat isToggle accessibilityTraits, I created simple code. I did not use Toggle View, because of test purposes. By the way, I have a question. Once I applied isToggle, VoiceOver just says swich button. Switch means is toggle, we have to provide state information such as on or off. So I thought that to provide state information, such as on or off, I should use accessibilityValue. But even if I applied accessibilityValue, VoiceOver does not read the value, just speak swich button. How to provide on or off state with accessibilityTraits isToggle? Thank you.
Replies
1
Boosts
1
Views
558
Activity
Jun ’23
Easy and lightweight translation editing
I have some .strings file for translation in my app and it turns out one of them is pretty bad. I have a new translator and I'm looking to make the process as easy for him as possible. Ideally, he would have just one file with my original english translation on the right, and the corresponding chinese translation on the right, making him easily be able to edit if necessary. The issue I see here is that is to create that file and then rebuild the .strings file. Is it possible? How would you do it? Best
Replies
2
Boosts
1
Views
1.3k
Activity
Jun ’23
Assistive Access issues
We have several issues enabling our app for Assistive Access: We use Critical Alerts. There seems to be no way to set this up unless we set up the app in "normal" mode first. If we run our app in AA first and then go back to normal the Notification settings page is blank. Notifications show up as saying "New". I am guessing this is a beta issue? We cannot use NFC (no connect sheet is displayed when we try.) We MUST have NFC to connect to our medical device (as well as BlueTooth). These are show stopper issues for our app.
Replies
2
Boosts
0
Views
1.4k
Activity
Jun ’23