Voice Over and Gestures in the Xcode IOS simulator

App Development and Programming

Hi People

I have been playing around with Xcode for the last few months and have got pretty much most things working in order to create a basic iOS app. However, I have come across a baffling situation when trying to work with gesture recognisers using voice over in the iOS simulator.

I have created a single view iOS app and made the view full size so I only have a window with a view controller in it which fills the whole window. I then create a single finger single tap gesture recogniser which works correctly. When you run the app in the iOS simulator and perform the voice over gesture on the trackpad to tap an alert box appears informing you that you have tap the app. I then created a single finger swipe down gesture recogniser which should also pop up an alert box informing you that you have performed the gesture when you perform the voice over gesture on the trackpad. I am pretty shore that I have set up the swipe down gesture correctly but this gesture doesn’t work in the iOS simulator when I run the app. I have also tried creating other gestures in this app and they all fail to work apart from the tap gesture.

I could be completely wrong on this my feeling is pointing me towards this being a voice over issue which may sound a bit mad. I am thinking along the lines of voice over either being used differently in the iOS simulator or voice over not acting the same in the iOS simulator as it does on iOS hardware devices.

I am completely baffled with this and any opinions or help with this would be much appreciated.

Many thanks




Submitted by mehgcap on Monday, June 15, 2015

Member of the AppleVis Editorial Team

If I'm understanding you right, you're trying to use a standard gesture recognizer with VoiceOver activated? I don't know for sure, but I think that will fail, as VO intercepts all touch events (unless your view explicitly tells it not to). Most gestures will indeed fail to be recognized, according to what I've picked up. Again though, I could be wrong, or misunderstanding your scenario. You can always join the [Apple list for accessibility development](mailto:accessibility-dev-subscribe@lists.apple.com), too.

The other thing you can do is run it on your device. I know Xcode 6 can't, but 7 will be able to, according to this year's WWDC. You can either grab the Xcode 7 beta now--if you are a developer, even a non-paying, lower-tiered one like me--or get it this fall. It's far easier to just run apps on your device, since there's no conflict with VO on OS X, and no question about what's going on as you swipe and tap.

May I ask, though, how you managed to get VoiceOver running in your simulator? I can only find a few app icons on mine, and none are Settings. VO (on the Mac) seems kind of flaky inside the simulator.

Hi Mehgcap

Think I got your name write do apologise if it wrong.

Thank you for the quick reply.

I am trying to learn how to use gesture recognisers in an iOS app and was hoping I could just use the simulator to use the app as if I was using a device. I have found that their is very limited voice over support in the simulator but wasn't sure whether that was a apple thing or whether I was using it wrong or had missed some settings. The only things I can do with voice over in the simulator are pan around my test apps and single tap on elements in my app with the trackpad or I can use the keyboard to jump through elements sequentially and select an element or look through the simulator menus. This just seemed to work at default and I definitely agree voice over can be a little flaky sometimes.

You mentioned standard gesture recognisers is there different ones to use for making an app work with voice over as I haven't noticed any others in Xcode or have you used the word standard in the context of standard or custom. and not implying that there voice over specific ones.

I will take the approach of running apps on a device as it sounds like it will be much easier. If I use a device how long does it take Xcode to run it on a device and can you still use the code and run approach with a device with out a long delay like you can on the simulator.

Once again many thanks for the quick reply
and link to the accessibility dev.

Submitted by splyt on Tuesday, June 16, 2015

Let me ask ... are you a sigted person?

If not have you tried to turn off the trackpad as a voiceover device making a vo + conter-clockwise with two fingers?

AWell gestures should be recognized automatically by voiceover. If you want your app to be VO compatible you just need to follow the standards for making apps useable ..... vo will take care of intercepting and acting upon gestures by itself and you don't need / must not interfer with its behavior unless you have specific needs and need to replace the standard behavior with something more specific.

Submitted by mehgcap on Tuesday, June 16, 2015

Member of the AppleVis Editorial Team

Running an app on your device is an Xcode 7 feature. We know it can be done thanks to WWDC, but I'm not technically allowed to provide details as 7 is still in beta. If it works well now, it might continue to do so by the fall, or it could be horrible; if it's bad now, it might be fixed by the fall. Either way, I can't comment thanks to the NDA. If you can, though, download the beta and give it a shot.

As to recognizers, I'd need to have a better idea of what you're trying to do. VO intercepts all touch events first, which is how it facilitates all the swipes and extra taps that make up its command set. Thus, you're app won't be able to get those events with VoiceOver on. If your goal is to do that, you can make your app's primary view a "direct touch" view, which VO will see as a place where it should let all touch events pass through directly. This is what is used in VO practice, Garageband instrument playing, or custom vibration pattern creation, just to name a few. If your ultimate goal is a functional app using standard UI controls, I'd urge you to concentrate on learning Swift and UI concepts. VoiceOver will be able to deal with navigating your interface and all that, assuming the interface is set up correctly, so you won't need to worry about that aspect.

Submitted by JDawg on Tuesday, June 16, 2015

Club AppleVis Member

Do you actually have to have paid for the Apple developer program to be able to create apps using XCode? Or could you create them just to see how to do it, then it works, pay for the program, and then submit your app to the App Store? Just curious.

Submitted by mehgcap on Tuesday, June 16, 2015

Member of the AppleVis Editorial Team

You can get Xcode and make OS X apps all you want, but you can't sign them (and thus distribute them with no security warnings on others' computers) without a paid account. Until this year, you couldn't do anything with iOS, but now you can make iOS apps and run them on a connected iOS device without a paid account. That will have to wait for Xcode 7 and iOS9, but it's coming. Of course, you can run your apps in the simulator, but as you've seen, that tends to be difficult to work with for voiceOver users.

Submitted by John on Tuesday, June 16, 2015

Hi Splyt

No I am not sighted, I was many years ago but have been totally blind for over 20 years now.

I tried turning off trackpad commander but when I do that I then get no audible feedback at all when trying to pan around a test app.

I have just down loaded Xcode 7 beta today and will have a play around with it over the next few months but it sounds like my best approach is going to be to buy an iOS hard ware device to run my app developments on as this will eliminate any voice over issues in the simulator.

I new that buying an iOS device was a must in the future but I was just hoping that I could do most of the developing and testing in the simulator environment and have longer before I would have to pay for a device as I don't want to use my primary iPhone for development.

Submitted by mehgcap on Tuesday, June 16, 2015

Member of the AppleVis Editorial Team

As you're looking for an iThing to use for development, remember to try to get something relatively recent. Older devices will run iOS9, yes, but the newer the better so you can use it for iOS10 and beyond. Plus, there are some features you may wish to test, like TouchID, that older devices lack. Just something to think about.

That said, once iOS9 comes out "for real", you might find that running your own apps isn't bad. So long as there's nothing dangerous in your code, I can't see how you could cause any harm. Sure, if your app starts touching iCloud Drive or other shared files/media, you will want to be careful. At least for basic practice, though, your primary device might work out well. Do this at your own risk, of course--I'm no expert by any means--but I think you might find that the risk is lower than you're expecting.

Submitted by splyt on Tuesday, June 16, 2015


Can't you right now with the beta and IOS 8 run software directly on your device?

I am asking because some people say you can and some people say you can not.
I am not asking about how beta software is working but am ratter asking if you can do it now because I did not whatch the WWDC.

Submitted by mehgcap on Tuesday, June 16, 2015

Member of the AppleVis Editorial Team

Sorry, but I'm honestly not sure. I know iOS9 allows it, but I would think that 8 would not. My (limited) understanding is that 9 has different security, so code not signed by a registered developer won't cause the system to flip out. I don't think 8 has this, but again, I may well be wrong. The best thing would be to test it, but I'm unable to do that at the moment.