When turning VoiceOver ON, GCController does not send button press events for "Button A" and "Button Center".
This happens when using Siri 2nd generation remote (with dedicated arrow buttons on the circle around center button) and also when using iOS remote. I didn't test it on old Siri 1st generation with touchpad without arrow buttons.
Example:
gameController.microGamepad?.allButtons.forEach { button in
button.valueChangedHandler = { [weak self] _, _, _ in
self?.buttonHandler(gameController: gameController, button: button)
}
private func buttonHandler(gameController: GCController, button: GCControllerButtonInput) {
print("BUTTON: Pressed \(button.description) isPressed=\(button.isPressed) isTouched=\(button.isTouched)")
}
#endif
VoiceOver ON (incorrect behavior):
BUTTON: Pressed Direction Pad Left (value: 0.030, pressed: 1) isPressed=true isTouched=true
BUTTON: Pressed Direction Pad Down (value: 0.079, pressed: 1) isPressed=true isTouched=true
BUTTON: Pressed Direction Pad Left (value: 0.000, pressed: 0) isPressed=false isTouched=false
BUTTON: Pressed Direction Pad Down (value: 0.000, pressed: 0) isPressed=false isTouched=false
VoiceOver OFF (correct behavior):
BUTTON: Pressed Direction Pad Left (value: 0.137, pressed: 1) isPressed=true isTouched=true
BUTTON: Pressed Direction Pad Up (value: 0.078, pressed: 1) isPressed=true isTouched=true
BUTTON: Pressed Button A (value: 1.000, pressed: 1) isPressed=true isTouched=true
BUTTON: Pressed Button Center (value: 1.000, pressed: 1) isPressed=true isTouched=true
BUTTON: Pressed Button A (value: 0.000, pressed: 0) isPressed=false isTouched=false
BUTTON: Pressed Button Center (value: 0.000, pressed: 0) isPressed=false isTouched=false
BUTTON: Pressed Direction Pad Left (value: 0.000, pressed: 0) isPressed=false isTouched=false
BUTTON: Pressed Direction Pad Up (value: 0.000, pressed: 0) isPressed=false isTouched=false
I could use for detection Direction Pad Left/Right/Up/Down and detect position between -0.7 and +0.7 and handle it as center button press, because I use that on old Siri remote where I need to distinguish center button and arrows (for switching TV channels by Up/Down and Skip forward/back by Left/Right arrows), but for new Siri remote it would be unnecessary workaround.
Does anybody know why the center/select button is not detected when VoiceOver is ON. Is there another way of detecting it using GCController?
I don't want to use SwiftUI onTapGesture for this one particular case.
Is it an unexpected bug in tvOS APIs or is there some specific reason why center button is not handled by GCController when VoiceOver is ON?
Thanks.
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
Activity
As a Mongolian user, I’ve observed that the Apple ecosystem (macOS, iOS, iPadOS) currently lacks native spellchecking support for the Mongolian language in Cyrillic script. This absence poses significant challenges for users who rely on Apple devices for communication, education, and professional work in Mongolian.
Could you share if there are any plans or roadmaps to address this gap? Additionally, I’m eager to contribute ideas, resources, or insights to help make Mongolian language support more accessible within the Apple ecosystem.
If there are any guidelines or steps I could take to advocate for or help implement this feature, I’d greatly appreciate your guidance.
Topic:
Accessibility & Inclusion
SubTopic:
General
I have some doubts about how VoiceOver handles focus when the screen updates.
When a new UIViewController is pushed onto a UINavigationController or presented modally, how does VoiceOver decide which element to focus on? Is there a way to control or customize this behavior?
In a UISplitViewController, when an item is selected in the primary view controller, the focus should shift to the relevant content in the secondary view controller. How can we ensure that VoiceOver correctly moves focus to the right element in the secondary panel?
I am registering my startup for an Apple Developer Account so that we can put our app on the App Store. I do not want use my personal Apple ID's payment to pay the $99 annual fee. How can I change the payment method so that I can continue with my enrollment?
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
Hi,
I am setting an accessibilityLabel and accessibilityHint property of a UIAlertAction. However, VoiceOver is only reading the label out. Usually, the label is read out, followed by a short pause and then the hint. Is this a known issue, where hints do not work for this element? I can append the hint to the label, but interested to know if there's something I'm doing wrong.
Regards.
Since UITextView does not support the zoom function, the zoom function of UITextView with addSubview is used in UIScrollView.
However, when I use the link here, the text behind it is missing.
Ex) https://appstoreconnect.apple.com/login\nApple Developer Login
-> The text “Apple Developer Login” does not appear.
If anyone has experienced the same problem as me or knows a solution, please leave a comment.
Note)
It is working normally in iOS16, but the text behind the link disappears in iOS18.
The text is not visible, but you can copy it and paste it to retrieve the missing text.
Topic:
Accessibility & Inclusion
SubTopic:
General
Hi everyone,
I've encountered a rare and strange crash in my app that I can't consistently reproduce. The crash seems to occur deep within Apple's internal frameworks, and I can't pinpoint which line of my own code is causing it. Here's the crash stack trace:
#44 AXSpeech
SIGSEGV
SEGV_ACCERR
0 CoreFoundation ___CFCheckCFInfoPACSignature + 4
1 CoreFoundation _CFRunLoopSourceSignal + 28
2 Foundation _performQueueDequeue + 492
3 Foundation ___NSThreadPerformPerform + 88
4 CoreFoundation ___CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
5 CoreFoundation ___CFRunLoopDoSource0 + 176
6 CoreFoundation ___CFRunLoopDoSources0 + 340
7 CoreFoundation ___CFRunLoopRun + 828
8 CoreFoundation _CFRunLoopRunSpecific + 608
9 Foundation -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
10 TextToSpeech _TTSCFAttributedStringCreateStringByBracketingAttributeWithString + 776
11 Foundation ___NSThread__start__ + 732
12 libsystem_pthread.dylib __pthread_start + 136
Sometimes, instead of line 10 referencing _TTSCFAttributedStringCreateStringByBracketingAttributeWithString, it shows:
10 TextToSpeech LogWarning(char const*, ...) + 7288
Has anyone experienced a similar issue or know what might be triggering this crash? Any guidance on how to investigate or resolve this would be greatly appreciated. Thank you!
Hello,
When I listen to title in my app with VoiceOver, it makes a strange sound.
This characters make with Korean+number+Alphabet.
Is this combination makes some strange sound with voice over?
I would like to ask if Apple can fix this issue.
Thank you.
Topic:
Accessibility & Inclusion
SubTopic:
General
Hi,
I’ve been reviewing the Apple Wallet provisioning documentation (Getting Started with Apple Pay In-App Provisioning_ Verification_Security_Wallet Extensions )and had a few questions regarding the color path recommendation (Green, Yellow, Orange, Red) returned during the in-app provisioning flow:
Who determines the color path—is it Apple directly, the Payment Network Operator (PNO), or both?
What criteria are used to determine the color path (e.g., device info, Apple ID reputation, past provisioning attempts)?
At what point in the provisioning flow is the color path recommendation received?
Is it included in the response after the PKAddPaymentPassRequest is submitted?
Is it accessible through any specific property or callback in the delegate method?
Additionally, for Orange Path with Reason Code 0G, I understand that in-app verification is not allowed and must be handled via tenured channels (e.g., SMS/email). Can you confirm if this logic still applies for requests initiated from within the issuer's iOS app?
Would appreciate any clarification or pointers to related documentation.
I am currently developing a macOS application that listens for system-wide mouse clicks to simulate typing with user-provided text. The app requires Accessibility permissions to function properly, and I want to ensure compliance with Apple’s latest privacy and security guidelines.
The app listens to global mouse clicks.
It simulates keyboard input with user-provided text
I would like detailed guidance on the following aspects:
What specific entitlements are required to allow system-wide mouse click monitoring and simulating user input ?
App Sandbox enable or disable?
what keys required to explain global mouse click monitoring and keyboard input simulation in the info.plist
What will be the configuration of Privacy Manifest
Topic:
Accessibility & Inclusion
SubTopic:
General
Tags:
Frameworks
Entitlements
Privacy
Accessibility
Following the official documentation, I'm trying to create a set of three localised Help Books.
The Help Books should be available in Spanish, English and Polish. Presently, I'm trying to complete English version.
App Structure
This is the plugin application consisting of main app and the plugin. The main app structure would looks as follows:
Files
. <XcodeProject Top>
├── Localizable.xcstrings
├── MyAppExtension
│ ├── MyAppExtension.swift
│ └── <other swift files>.swift
├──MyApp
│ ├── Info.plist
│ ├── +Array.swift
│ ├── +ButtonStyle.swift
│ ├── <other app swift files>.swift
├── Resources
└── MyApp.help
└── MyApp.help
└── Contents
├── Info.plist
└── Resources
├── English.lproj
│ ├── ExactMatch.plist
│ ├── InfoPlist.strings
│ ├── MyApp.helpindex
│ ├── MyApp.html
│ └── pgs
└── shrd
MyApp / MyApp.help / Info.plist file
Consists the following values:
Bundle name: MyApp
HPDBookAccessPath: MyApp.html
HPDBookTitle: My App Help
Default localization: en_gb
MyApp / Info.plist file
Contains the following entries:
Help Book directory name: MyApp.help
Help Book Identifier: MyApp Help
Build phase
The Copy Bundle Resources copies MyApp.help in MyApp/Resources.
Questions
Is the provided folder structure valid for creating a localised help books
Is there anything that is missing from across Info.plist files or is in the wrong places?
Why the MyApp -> Help opens the main help menu, not the app help
“image playground apple access requests sitting in Access requested for one week English South Africa
thank you
Topic:
Accessibility & Inclusion
SubTopic:
General
Over the years apple y'all have continued to improve iOS adding many new features and I’m very impressed with the new ai features however there’s one thing that yall haven’t added for some reason and it’s a clear all tabs button. It would make things so much easier instead of swiping up on all those tabs you can you just press a button and everything’s reset. I don’t know if y'all have a reason for not adding the button yet but just putting it out there.
Topic:
Accessibility & Inclusion
SubTopic:
General
I’m developing an ARKit application where I aim to attach procedurally generated audio to detected planes in the environment. While using a static audio file with SCNAudioSource and SCNAudioPlayer works as expected, integrating procedural audio via AVAudioSourceNode does not produce any sound, nor does it generate any error messages: Stack Overflow Post
Working Implementation with Static Audio File:
let audioPlayer = SCNAudioPlayer(source: audioSource)
node.addAudioPlayer(audioPlayer)
Attempted Implementation with Procedural Audio:
// Audio generation code
}
let audioPlayer = SCNAudioPlayer(avAudioNode: audioNode)
node.addAudioPlayer(audioPlayer)
In this setup, the AVAudioSourceNode successfully generates audio when connected directly to an AVAudioEngine. However, when used with SCNAudioPlayer and attached to an SCNNode, it fails to produce sound. What doesn’t work is creating some procedural audio with an AVAudioNode, as documented here:
Apple docs
Additionally, I explored the WWDC18 AR game project, SwiftShot, which utilizes SCNAudioPlayer(avAudioNode:). After updating it for the latest Xcode, the graphics function correctly, but the audio does not play. I also noted that the Apple documentation mentions an audioPlayerWithAVAudioNode: method, stating:
Using this initializer is typically not necessary. Instead, call the audioPlayerWithAVAudioNode: method, which returns a cached audio player object if one for the specified AVAudioNode object has already been created and is available for use.
However, this method does not appear to be available in Swift. Any insights or guidance on this matter would be greatly appreciated.
Currently i am using an iphone 15 pro which is just 7 months old but it was good till this month it was at 97% even after using more than 6 months, but in recent fews days it is regularly dropping by 1% every day and now it is at 89% only with 10 to 12 days it dropped by 8% . Is my battery defective or something is wrong with my phone .
bcoz of this i am very upset because of this bad decrease of battery health . i have heard it is normal to degrade by 1% monthly but mine is dropping daily its soo frustrating.
and if my battery reaches under 80% within the warrenty period?
will get a free battery replacement from apple or not ? I don’t have apple care+ .
But its under 1 year standard warrenty .
please reply apple as its soo frustrating
I have a TabView with a sample tabItem as follows:
.tabItem {
Label ("Import", systemImage:"doc.on.doc")
.accessibilityLabel("Import Text")
}
But accessibility settings for large display size on does not seem to work, nor do dynamic font sizes:
.tabItem {
Label ("Import", systemImage:"doc.on.doc")
.font(.largeTitle)
.accessibilityLabel("Import Text")
}
The tabItems appear as a fixed size. The tab contents scale well, so this does not look pleasant at all.
Is this a known bug in SwiftUI?
Topic:
Accessibility & Inclusion
SubTopic:
General
I thought Apple was all about inclusivity. Is this not harming their brand more than they’d realize?
Topic:
Accessibility & Inclusion
SubTopic:
General
I have just purchased an Apple developer Account from Bangladesh and it sent codes perfectly for the first 2-3 times for logging in, but after that no matter what I do it doesn't send verification code and I am stuck, I now cannot log in and this is extremely extremely frustrating
I’ve been stuck on 48 hours now, is it just slow?
Topic:
Accessibility & Inclusion
SubTopic:
General