Is there a way to detect whether the Accessibility Zoom feature is turned on?

UIKit include UIAccessibility functions for determining whether Voice Over, Closed Captioning, Guided Access, and Invert Colors are turned on. However, I haven't yet been able to find a way to determine if the user has the Zoom feature turned on (Settings > General > Accessibility > Zoom). Does anyone know of a way to get this info?

Accepted Reply

If you're finding that you need to provide a different experience for the people using your app depending on whether or not Zoom is enabled, I'd challenge you to task yourself why this is, and how you can tweak the design to work better for all users.

There should be very few reasons that you need to present a different UI for low vision users. If your app contains text, you should scale the text based on the user's preferred font size:
https://developer.apple.com/videos/play/wwdc2017/245/

If your app uses 3 finger gestures and conflicts with Zoom gestures, you can notify the user of this conflict using this API:
https://developer.apple.com/videos/play/wwdc2017/245/

You can also move Zoom's focus to a specific control if needed using this API. If Zoom is not on, this will have no effect, so you don't have to worry about whether or not Zoom is on:
https://developer.apple.com/documentation/uikit/uiaccessibility/1624921-zoomfocuschanged

If you are able to provide more specific details about what parts of the user experience in your app are dependent on Zoom running, I might also be able to recommend some alternatives, but without more details I hope the above is helpful. It's very rare that you'd need to legitimately know that Zoom is on in order to design a good experience.

If you are trying to determine if zoom is on for analytics data reasons, I don't think we have any options for you from an API standpoint, as this information can unnecessarily reveal information about the user's device that could be sensitive to them.

Replies

There is no way to determine if Zoom is on or not from your app. However, if you explain why you would like this info, I might be able to suggest some alternatives or other APIs you can use to accomplish your goals.
Basically the Accessibility Team in my company wants to know the state of few accessibility settings in our user devices, that because we want to improve the user experience for all our apps detecting their special necessities. We are tracking now some of the accessibility settings but we want to know if the zoom feature is on and maybe where in our app is used in order to detect opportunity areas. The android platform seems that has some API or services to get this state for the similar feature (Page Magnification). Thanks for any help!
If you're finding that you need to provide a different experience for the people using your app depending on whether or not Zoom is enabled, I'd challenge you to task yourself why this is, and how you can tweak the design to work better for all users.

There should be very few reasons that you need to present a different UI for low vision users. If your app contains text, you should scale the text based on the user's preferred font size:
https://developer.apple.com/videos/play/wwdc2017/245/

If your app uses 3 finger gestures and conflicts with Zoom gestures, you can notify the user of this conflict using this API:
https://developer.apple.com/videos/play/wwdc2017/245/

You can also move Zoom's focus to a specific control if needed using this API. If Zoom is not on, this will have no effect, so you don't have to worry about whether or not Zoom is on:
https://developer.apple.com/documentation/uikit/uiaccessibility/1624921-zoomfocuschanged

If you are able to provide more specific details about what parts of the user experience in your app are dependent on Zoom running, I might also be able to recommend some alternatives, but without more details I hope the above is helpful. It's very rare that you'd need to legitimately know that Zoom is on in order to design a good experience.

If you are trying to determine if zoom is on for analytics data reasons, I don't think we have any options for you from an API standpoint, as this information can unnecessarily reveal information about the user's device that could be sensitive to them.