Swift UI and VoiceOver question

macOS & Mac Apps

I have a question regarding SwiftUI and the preview. Is it accessible with vO? I am considering moving to Catalina, but am not sure whether it's worth a hustle. I am curious of your thoughts on the subject.



Submitted by Chris Fleizach on Saturday, November 9, 2019

The ability to make swiftUI apps accessible is possible. But it is up to the developer of the app to ensure it works well. However I think you’re asking whether catalyst apps are accessible (the iOS apps that run on mac). The answer is by and large yes, especially if those same apps work well on iOS.

Hey. Thanks for answer. I was wondering wether Xcode's preview pane next to code editor for SwiftUI works with VoiceOver well. Some of the tutorials on swift UI talk about interacting with controls on some sort of canvas area to modify the control's properties etc.

Submitted by Blade Runner on Saturday, November 9, 2019

In reply to by Basia F

I have not found the preview in Xcode to be useful using Voiceover. However, you don't need access to the preview to do the things you mentioned.
First, you can access the inspector of the element just by moving the insertion poin to the instantiation in the code editor. Also most of the properties of a UI element are set in code.
A much bigger concern than the preview to me is the accessibility of the simulator. vo accessibility seems to stay broken these days.

Submitted by Basia F on Sunday, November 10, 2019

In reply to by Blade Runner

Thanks a lot. The suggestions you made are important to me. Maybe waiting for Mac OS 15.3 is a better approach now. I need a system I can rely on.

Submitted by Rogue Echo on Monday, November 11, 2019

I'm developing in Xcode 11.2 on OSX 10.15.1 and I'm totally blind. So I do not Use Interface Builder or the simulator at all. What I can do is create my UI totally in code.

Instead of using the built in Simulator in Xcode I must use an actual Mac or IOS device running voice over to test any app projects.

That being said, I did run an IOS project in the Simulator before writing this and VO did read all the UIElements in the app's main view. But I could not interact with it all. So it still needs work to use Xcode device simulator with Voice Over.

Hope this helps.

IB has worked with voiceover since Xcode 4.5 and I am very comfortable using it. The simulator worked with vo for several years, but stoped working in Xcode 9. It worked briefly in 10 before it broke again. Then, vo access-ability came back in Xcode 11.2 beta 1 only to break in beta 2.
As far as SwiftUI, for serious development, I believe it would be much wiser to stay with Appkit or UIkit as they are both very stable and well documented.. It will be be a long time before SwiftUI replaces them in my opinion.

Submitted by Basia F on Tuesday, November 12, 2019

In reply to by Blade Runner

IB is really great, that's for sure. But I was wondering, how to follow Human Interface Guidelines since they do not offer any scale, directions on margins etc. Visual guides are great for everybody but blind developers. Just curious.

Apple seems too mean for devs to rely more on the auto layout system rather than strict metrics. Stack views make layouts much easier than they used to be.
They used to have layout guides in their human interface guide documentation, but it was really just a starting point to use. Incidentally, I still have the old pdf of the OS X human interface guidelines. The idea of a nice looking layout is rather subjective and many devs rely on designers for that. The main idea to a good layout is to make sure margins are symmetric. So, if you just use a little common since, you will probably be in pretty good shape. I've never had anything rejected.
That being said, margins from the edges of views are usually 20 points and element spacing is usually around 8 to 10 points. StackViews handle most of this now however.

Submitted by Basia F on Saturday, November 16, 2019

Thanks anyway. Your answer cleared up some of the confusion. I'm not even close to a full stack developer at this point in time, but intend to learn more. And I've discovered overcoming challenges in my own projects (contrary to blindly follow some tutorials) Makes far more sense. I can learn a lot although the process looks slow. In my opinion it's not, since it makes me solve real life problems.