I have mulling over this for many years ,Uralic and Siberian language user interface Support.Ainu of Japan is only supported by writing roman and rendering into Katakana with a few small modified characters there is no user interface ,spell,grammar checker,dictionary ,translator ,of course the Ainu has few terms in modern vocabulary but Iam studying the language in order to find words and coin new ones, iPhone hoomi-ye-p electric speak thing. I am looking for other peple who have the same idea.
General
RSS for tagExplore best practices for creating inclusive apps that cater to users with diverse abilities
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
After replacing Big Sur OSX 11.0 with the latest 11.5, my app's AXObserverAddNotification methods fails. Here is sample code I tested from StackOverflow: https://stackoverflow.com/questions/853833/how-can-my-app-detect-a-change-to-another-apps-window
AXUIElementRef app = AXUIElementCreateApplication(82695); // the pid for front-running Xcode 12.5.1
CFTypeRef frontWindow = NULL;
AXError err = AXUIElementCopyAttributeValue( app, kAXFocusedWindowAttribute, &frontWindow );
if ( err != kAXErrorSuccess ){
NSLog(@"failed with error: %i",err);
}
NSLog(@"app: %@ frontWindow: %@",app,frontWindow);
'frontWindow' reference is never created and I get the error number -25204. It seems like the latest Big Sur 11.5 has revised the Accessibility API or perhaps there is some permission switch I am unaware of that would make things work. What am I doing wrong?
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?
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?
Topic:
Accessibility & Inclusion
SubTopic:
General
Tags:
Localization
User Notifications
Siri and Voice
I'm using Xcode 15.2 and have migrated my (macOS) project to use an xcstrings file a while back. Now when I check the xcstrings file, all items are marked as "stale". When I add new localized strings in code, they don't show up in the xcstrings file. The xcstrings file is built correctly (into .lproj/Localizable.strings) when building.
Where can I check which source files are checked to update xcstrings status? "xcstringstool" appears to have a "sync" feature which reads "stringsdata" files, but there is no information in the xcstringstool help on where the stringsdata files come from.
If I create a new project I can see a "stringsdata" file being generated for each source file in the intermediate build products folder.
We currently have an odd issue with VoiceOver spelling a word letter by letter while the same word is spoken as a whole for other items.
The app is in German.
I have a View in SwiftUI whose button traits are removed, then a label "Start Tab 1 von 5" is added. "Tab is spoken as a whole word here, all fine.
If I change the label to "Tab-Schaltfläche" or for example "SimplyGo Tab 3 von 5", then "Tab" is spoken as "T A B", letter by letter. is there a way to force VoiceOver to speak it as a whole?
Topic:
Accessibility & Inclusion
SubTopic:
General
A lot of apps use undocumented App-prefs URLs to help users get to the iOS Settings screen needed to set up the app. In iOS 18, it seems like these all stopped working.
Here are the ones I currently use:
App-prefs:MESSAGES - broken in iOS 18
Used for SMS Protection.
App-prefs:Phone - broken in iOS 18
Used for Live Voicemail, Silence Unknown Callers, and SMS Reporting.
Some but not most paths have specific documented replacements. E.g. for Call Blocking & Identification you can use CXCallDirectoryManager.sharedInstance.openSettings() and this still works in iOS 18. But I don't see any other direct replacements.
Apple probably doesn't consider this a bug but I filed FB14378568 anyway.
I consider this an accessibility issue because many older, inexperienced, or users with disabilities have trouble finding the right Settings screen based on a textual description alone.
All of the Sports widgets in iOS 18 have disappeared for older models, people relied on these for sports updates!! Not even the new Apple Sports app has a widget...
Topic:
Accessibility & Inclusion
SubTopic:
General
When would it be a good idea to utilize numbered lists with VoiceOver accessibility. As an example, for tab bars it will read about "2 of 5".
In speaking with an Accessibility engineer at WWDC this year, the said that its good practice, but we ran out of time in the call to dig further deeper. When or how do you know when you should read out the item count "2 of 5".
It makes sense to me in say a tab group or a chip group, but I don't see it being good in say potentially a UITableView with potentially a various number of sections of which each section itself can include multiple cells.
I've had trouble finding additional guidance on this topic, if anyone can provide recommendations or their thoughts, that would be great.
Topic:
Accessibility & Inclusion
SubTopic:
General
Same problem as everyone getting after IOS 18update.
Topic:
Accessibility & Inclusion
SubTopic:
General
I have 2 subscriptions, monthly and year
first:DID_CHANGE_RENEWAL_PREF + DOWNGRADE: Customer downgrades a subscription within the same subscription group; The current subscribe is year;if i change to month;when the subscribe year was expire,Automatic renewal will change to month
second:DID_CHANGE_RENEWAL_PREF+UPGRADE: Customer upgrades a subscription within the same subscription group. The current subscribe is month;if i change to year;I need to pay for the annual subscription immediately;and The subscription immediately switches to the annual
third:DID_CHANGE_RENEWAL_PREF subtype is None Customer reverts to the previous subscription, effectively canceling their downgrade.
what this mean? This is Test Env,month is five minutes;year is one hour ①My current subscription is an annual, startTime:2024-10-02 15:04:58 ,expireTime:2024-10-02 16:04:58 ②first DOWNGRADE to month,at 2024-10-02 15:14:16 ②after 38 minutes,I change to the annual subscribe;at 2024-10-02 15:52:00 in the end,the Notification purchaseDate 2024-10-02 15:52:00;expiresDate 2024-10-02 16:52:00; So When I get NotificationType=DID_CHANGE_RENEWAL_PREF,NotificationSubType=None,Do I need to create a new subscription for the users? Is it the latest notice of purchaseDate and expiresDate, for a year?
The appleNotification Payload as follows:
JWSTransactionDecodedPayload( originalTransactionId='2000000731045285', transactionId='2000000731088945', webOrderLineItemId='2000000076096676', bundleId='app.xxxx', productId='com.xxxx.365', subscriptionGroupIdentifier='21514251', purchaseDate=1727855520000, 2024-10-02 15:52:00 originalPurchaseDate=1727852699000, 2024-10-02 15:04:59 expiresDate=1727859120000, 2024-10-02 16:52:00 quantity=1, type=<Type.AUTO_RENEWABLE_SUBSCRIPTION: 'Auto-Renewable Subscription'>, rawType='Auto-Renewable Subscription', appAccountToken='fa37b7a2-2b0b-43cb-8fda-a1fb21168efe', inAppOwnershipType=<InAppOwnershipType.PURCHASED: 'PURCHASED'>, rawInAppOwnershipType='PURCHASED', signedDate=1727855526632, 2024-10-02 15:52:06 revocationReason=None, rawRevocationReason=None, revocationDate=None, isUpgraded=None, offerType=None, rawOfferType=None, offerIdentifier=None, environment=<Environment.SANDBOX: 'Sandbox'>, rawEnvironment='Sandbox', storefront='CAN', storefrontId='143455', transactionReason=<TransactionReason.PURCHASE: 'PURCHASE'>, rawTransactionReason='PURCHASE', currency='CAD', price=14990, offerDiscountType=None, rawOfferDiscountType=None)
JWSRenewalInfoDecodedPayload( expirationIntent=None, rawExpirationIntent=None, originalTransactionId='2000000731045285', autoRenewProductId='com.xxxx.365', productId='com.xxxx.365', autoRenewStatus=<AutoRenewStatus.ON: 1>, rawAutoRenewStatus=1, isInBillingRetryPeriod=None, priceIncreaseStatus=None, rawPriceIncreaseStatus=None, gracePeriodExpiresDate=None, offerType=None, rawOfferType=None, offerIdentifier=None, signedDate=1727855526632, 2024-10-02 15:52:06 environment=<Environment.SANDBOX: 'Sandbox'>, rawEnvironment='Sandbox', recentSubscriptionStartDate=1727852698000, 2024-10-02 15:04:58 renewalDate=1727859120000, 2024-10-02 16:52:00 currency='CAD', renewalPrice=14990, offerDiscountType=None, rawOfferDiscountType=None, eligibleWinBackOfferIds=None)
Boost
Unwatched post
Topic:
Accessibility & Inclusion
SubTopic:
General
macOS > Settings > Keyboard > Text Replacement is a macOS/iOS feature I use extensively but it is unavailable in quite a few macOS applications — including some Apple apps like Xcode. Other apps I want Text Replacement to work in but it doesn't are the Adobe CC suite, all my code text editors like VC Studio, Sublime Text, BBEdit, emacs etc and Firefox.
Does anybody know what the file path is for the file that stores the Text Replacement key/string pair data?
If i can access the .plist file or similar where the Text Replacement key/string pairs are stored I will be able to convert to JSON using REGEX and import to the Firefox plugin that will replicate Text Replacement functionality in Firefox for me. Ditto other code editor applications with their own particular text substitution functionality.
Background
Some of these apps have plugins or functional equivalents of Text Replacement but i need a way to do the import/export dance to keep them in sync with my Text Replacement text pairs.
Sadly, even though we can select the Text Replacement table (in macOS but not in iOS versions), we can't copy that information. This seems to me a violation of good GUI design principles. Why allow selection of the entire table if we cannot copy it to the clipboard?
Nor can we import or export the table of text tuples. The Text Replacement GUI has no buttons to do this (consider this post also a FR for that).
Screen-capturing and running text recognition software over the PNG it is not an option given:
a) all the UTF-16 unusual glyphs and combination glyphs i use;
b) that I'd like to script this as a multi-directional syncing application I can run periodically.
Typically macOS and app preferences are stored in plist files. I want to find such a file and convert it to JSON for importing into a Firefox plugin that replicates Text Replacement within Firefox.
I tried modifying Text Replacements by adding a new item to the list and clicking "Done" and then filtering ~/Library for .plist files and sorting by "Date Modified" but nothing is showing up with these values in it.
Topic:
Accessibility & Inclusion
SubTopic:
General
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
Topic:
Accessibility & Inclusion
SubTopic:
General
After updating to iOS 18, I've noticed that my app's icon displays correctly on the home screen but appears with a black background in the 'Settings > Apps' section when Dark Mode is active.
The icon currently has a non-transparent gradient orange background, and I haven't set up a separate icon for Dark Mode. Has anyone else experienced this issue, or does anyone have suggestions for how to ensure the app icon looks the same in Dark Mode as it does in Light Mode?
Topic:
Accessibility & Inclusion
SubTopic:
General
XCode 16.0 : An Internal Error Occurred Editing functionality may be limited
Topic:
Accessibility & Inclusion
SubTopic:
General
Can it please be explained why the voice memo layers is exclusive to iPhone 16 pro models?
I was told by apple support that if it was possible on older models Apple would have implemented it.
This type of functionality has been in technology for tens of years and has a proven track record of being implemented across so many different platforms and even apps in Apples on App Store. So that response from apple support is just rubbish to be honest. Even if the response is “so we can sell the iPhone 16 pro“ then so be it. ive noticed Apple locking software features to new devices lately and it’s genuinely making me think about buying my first even android phone.. because I really don’t support these kind of scummy tactics.
many thanks,
accessibilityUserInputLabels is working fine with any view I tried this on. Meaning that the control can be toggled with the provided alternative names when using Voice Control.
When setting this property on any UIBarButtonItem though, it seems Voice Control ignores the alternative names provided by setting accessibilityUserInputLabels. For comparison, accessibilityLabel works perfectly when set on UIBarButtonItem.
Is anyone facing the same issue?
Using Xcode 16.0 (16A242) on iOS 18
Went to privacy and security on iPhone 11 and development mode is not there
I am developing an app using DeviceActivity.
let schedule = DeviceActivitySchedule(
intervalStart: DateComponents(hour : 0, minute : 0, second: 1),
intervalEnd: DateComponents(hour : 23, minute : 59, second: 59),
repeats: true
)
I found that on the second day, intervalDidStart(for: DeviceActivityName) gets called multiple times.
I also tried
let schedule = DeviceActivitySchedule(
intervalStart: DateComponents(hour : 0, minute : 0, second: 1),
intervalEnd: DateComponents(hour : 23, minute : 59, second: 59),
repeats: false
)
and started monitoring for the next day in the intervalDidEnd(for: DeviceActivityName) method.
but , intervalDidStart(for: DeviceActivityName) still gets called multiple times.
How should I resolve this issue?
I am working on capturing 48MP images using the iPhone 16 Pro Max with the Ultra-wide camera. I’ve updated the code to capture the maximum supported dimensions with the following snippet:
if #available(iOS 16.0, *) {
photoOutput.maxPhotoDimensions = device.activeFormat.supportedMaxPhotoDimensions.last!
photoSettings.maxPhotoDimensions = .init(width: 5712, height: 4284)
}
However, I’m still not getting the expected results. My goal is to capture 48MP images, and I want to confirm if the Ultra-wide camera supports this resolution or if I’m missing any other configuration.
Any guidance would be appreciated!