If both screenChanged and layoutChanged notifications signal changes in the UI and allow you to move VoiceOver's focus somewhere else, what's the difference? To the user, screen changed plays a sound indicating them they got moved to a new screen.

One example from the YouTube app shows that, when VoiceOver is on, and double tapping with the more actions button selected, VoiceOver plays a sound indicating that the screen changed (that's the difference between screen changed and layout changed notifications), and will then move the focus to the dismiss button of the presented screen. The second example is the camera app. When the camera controls button is focused, VoiceOver says:

You may also find interesting...

If you are developing a custom component, that can change value, chances are that it will need the adjustable accessibility trait (VoiceOver will say: "Adjustable"). Think of a component that lets you rate from one to five thumbs up (or stars).

UINotificationFeedbackGenerator has a “success” feedback type. Consider using it when a task was performed successfully together with any other visuals or sound. The use of multiple modes just makes it easier for everyone to understand your app.

Since iOS 14, you can get a human readable localised name for a UIColor, with a very useful property called accessibilityName, that you can use in accessibility attributes like labels or values. How cool is that? https://developer.apple.com/documentation/uikit/uicolor/accessibilityname

Created in Swift with Ignite.

Supporting Swift for Swifts