This week, AppleVis posted an open letter to Apple, regarding the accessibility of its Xcode IDE. As someone who uses Xcode on a daily basis, I wanted to draw some attention to this effort and comment on a few aspects of it.
On the whole, I agree that Xcode could be improved in several key areas, most notably Interface Builder, in the way that it interacts with VoiceOver. There are definitely issues that must be worked around when developing software with it, and I very much want to see Apple address these issues. So, I applaud the writing of this letter. Whether or not open letters are an effective way of encouraging change is another matter entirely.
In their desire to hammer home some important points, some other, also very important, items were omitted from the letter, and I fear these omissions will potentially result in two unintended side effects. The first, and most damaging, is that they will discourage visually impaired coders from trying out Xcode at all. The second is that by omitting certain details, they may inadvertently cause their letter not to be taken seriously.
Since this is an important issue that effects all developers who use VoiceOver to access Xcode, I want to add my own thoughts to this discussion.
I’ve been using Xcode since version 3. While there is still quite a lot of room for improvement, it should be noted that we’ve come an extraordinarily long way since then in terms of accessibility. It was, in fact, entirely impossible to use Interface Builder in those days. Now, though cumbersome for some tasks, it is at least possible.
When Xcode 4 came along, the UI was entirely revamped. For a VoiceOver user, it was a mess of hundreds, perhaps thousands, of controls all crammed into a never ending sea in the Xcode main window. It was extremely difficult to use, and more than a little overwhelming. Over the next couple of point releases, a tremendous amount of accessibility work was done, and the interface became immeasurably more VoiceOver friendly, thanks in part to the logical organization of related controls into groups.
Since then, most, if not all, updates to Xcode have provided improvements to accessibility. Xcode 6 has continued this trend. Many controls that VoiceOver reported as simply “unknown” now have accessibility labels, making them easier to identify. Not all of these labels are terribly intuitive, at least not to me, so there is still room to improve in this regard, but it is yet another step forward in the right direction.
All screen readers, regardless of platform, have a variety of tools at their disposal for dealing with difficult situations. Jaws for Windows relies heavily on scripts and configurations, Window-Eyes uses scripts and set files, and VoiceOver relies on Activities and scripts. In broad strokes, all of these strategies are similar, though the details can vary widely between screen readers.
Some of the scenarios described in the open letter can be improved upon by using the tools made available by either VoiceOver or Xcode. HotSpots, in particular, can drastically minimize the amount of navigating and interacting required to perform common tasks in Xcode. I know, because I use this technique everyday. Setting VoiceOver HotSpots to the various group views in Xcode not only moves you immediately to that group if it is visible on the screen, but it also automatically interacts with it.
Navigation can also be sped up by judicious use of VoiceOver’s Trackpad Commander. This does, however, require you make yourself familiar with the layout of the various views in Xcode.
Xcode itself has enumerable hotkeys and tricks for increasing efficiency. Some of these are readily obvious in the UI, and some take some digging to discover. For instance, Control-Command-Up/Down arrows can jump you quickly between related header and source files. Command-L allows you to jump to any line number of the current file.
Connecting interface elements to code is hands down the most cumbersome task for VoiceOver users, but if performed correctly, I’ve found it to work extremely consistently. I have received many emails and tweets about this aspect of the process, and in almost every case, the system did not work for one of two reasons: either the user was missing a step, or else they were trying to connect an element to an object that it could not be connected to. That latter is particularly problematic, because in OS X development, controls are permitted to be connected to the AppDelegate. In iOS, they are not, and must typically be connected to a ViewController. If you try to connect, for instance, a button to the AppDelegate in an iOS project, nothing happens, as it shouldn’t. In the case of users who have missed a step, this is illustrative of the cumbersome nature of the task, and shows why the process needs to be improved upon.
Finally, while I have not found the “busy” problem to be quite as bad as implied in the AppleVis letter, it can be largely mitigated by using the VoiceOver option to eliminate Cursor Tracking. (VO-Shift-F3). This is admittedly not ideal, and this is an area I would like to see improved upon across OS X, both in Apple’s apps and third-party apps. The one area where it becomes a serious issue is in the Library group, but turning off Cursor Tracking eliminates the problem.
Apple can, and should, continue to improve the accessibility of Xcode for VoiceOver users. There is a lot of room for improvement, and hopefully open letters, like the one posted by AppleVis, will draw more attention to the fact that there are a growing number of VoiceOver users who will benefit from said improvements. To imply that they have not been paying attention to this problem, however, is an assertion that is not upheld by the history of the product.
If more VoiceOver users embrace Xcode as a development platform, we can have, collectively, a stronger voice to influence change, especially in this more open era that Apple seems to be moving into. We should not, however, avoid making use of the accessibility tools at our disposal, or, however inadvertently, discourage VoiceOver users from learning to use Xcode as it is today. We need more users to strengthen our case to Apple. The more of us there are, the higher a priority these issues can be given. Engineering resources are not infinite.
Let’s discuss the problems of using Xcode with VoiceOver; let’s try to affect change; but let’s also be encouraging users to utilize all the tools and tricks at their disposal as well.
Xcode has come a long way since version 3. Here’s hoping Apple continues to push accessibility forward for VoiceOver users in its development tools.
As is our custom, we are going to highlight some of the changes to VoiceOver and accessibility in iOS 7 here. This is not intended to be an exhaustive list of the differences between versions 6 and 7, but rather a rundown of the most interesting things to expect in this update.
We assume, for the purposes of this look at iOS 7, that you are familiar with VoiceOver and how it works and behaves in previous versions of the operating system.
As was the case last year as well, most of the significant changes to iOS 7 for VoiceOver users will not be to VoiceOver or accessibility, but those found in the operating system and available to all users. This is as it should be. Much of the OS has been rethought, redesigned, and reorganized with this update, which Apple has called the most significant update to iOS since its introduction in 2007.
Since the general changes to iOS have been, and will continue to be, widely documented on mainstream tech sites, we will primarily be focussing on VoiceOver and accessibility here. However, there are a few general changes worth noting in the iOS 7 update.
Many of the layouts and basic functionality of the stock apps included with iOS have changed…some more than others. Some controls or other onscreen elements have moved, and so you may need to become accustom to their new locations.
Many default audio cues, such as the iOS charging sound, incoming/outgoing message indicators, default text sound, etc, have changed. In general, I feel these adjustments are for the better. They tend toward the classier, more modern, and more subtle. Users with hearing impairments may find some harder to hear than the previous sounds, however.
One of the most radically redesigned apps for iOS is the Calendar. On the iPhone, this app is a tremendous improvement over the previous design. The iPad interface does not always behave as expected with VoiceOver, but works well in general.
If you’re a music lover, iTunes Radio is a gem of a service. I’m not sure if it is because I am an iTunes Match subscriber or not, but iTunes Radio has, thus far, been far better at playing songs I like than Pandora ever was.
The new layout for folders means that, while inside a folder, you have only three apps per row, but since a folder can now contain multiple pages of folders, this is not much of a problem. Folders behave exactly as the Home screens do, so VoiceOver users should feel right at home.
Accessibility Gets More Accessible
The Accessibility settings have been moved to a location of greater prominence in the Settings app. Previously, it was buried near the very bottom of the General screen. It is now located near the top of General, and the screen need not be scrolled to reach it on most devices. This is a very welcome change, and it is nice to see Apple shining a greater spotlight on their accessibility features.
The Pen Is Mightier Than the Keyboard
With the popularity of apps like Fleksy and MBraille, it is clear that some users find text entry on the software keyboard cumbersome or difficult, especially in certain situations. I must confess, I do not use either of these apps, as I have found my speed on the onscreen keyboard to be satisfactory, and use dictation when typing is inconvenient.
That being said, Apple has provided a new feature to VoiceOver users that is a pretty impressive alternative to typing your text entry. Tucked away, hidden at the bottom of the option rotor settings in VoiceOver’s settings, is an option simply called “Handwriting”.
When entering text, you can select “Handwriting” from the rotor, and then use the screen as a canvas to literally draw printed characters. By default it starts in the category of lower case letters, but also includes recognition for uppercase letters, numbers, and punctuation.
Simply draw a letter as it appears in printed form, and it is entered into the text field. Three-finger swipes up and down will change the category of character type you are entering. A two-finger swipe right will input a space, and a two-finger swipe left will backspace.
If you know the shapes of printed characters, a little practice will find you entering letters at a pretty good clip in this mode. Having already mastered a pretty speedy technique with keyboard entry on my iOS devices, it has not yet overtaken my typing speed, but I can see where it might eventually, and certainly could for others who have trouble with keyboard entry. There are also occasions when typing is not optimal, such as in noisy surroundings, and this would definitely be handy in those situations.
The great thing about doing text entry in this way, is that it limits the learning curve for those who are already familiar with the shapes of printed letters to almost zero. For those who are not, this is a great excuse to learn.
You can also enter your pass code, if you keep one on your device, using the handwriting feature, and it will even default to numbers for this purpose.
The Handwriting feature has other uses and modes, too. If turned on while you’re on the home screen, you can start writing letters on the screen, and a list of apps beginning with those letters appears. Apps in this list can be anywhere on your device, and are not limited to those on the current screen or in the current folder. Use a two-finger swipe up or down to move through the list, and double-tap, as usual, to activate the app you want. Those who are familiar with the Item Chooser on Mac will find this functionality very familiar.
When in web content, such as in Safari, Handwriting mode has yet another use. Write a letter corresponding to a rotor option, and VoiceOver switches to that form of navigation. For example, writing “H” switches to Headings, and two-finger swipes up and down will move you through the headings on the page. Draw an “L”, and now you are navigating links. This will be particularly nice for users who keep a lot of items in their rotor and want a faster way to move through various HTML element types.
The accuracy of the recognition of this mode is superb, and with just a little practice, many users are likely to find they enjoy this form of text entry. Hats off to Apple for incorporating this in such a fluid and intuitive way.
Center on the Centers
In addition to the Notification Center, iOS 7 now includes a Control Center feature, which provides quick access to commonly accessed settings and features of your iOS device. From the Control Center, you can quickly turn on or off Airplane mode, wifi, or BlueTooth, as well as adjust brightness, control media playback, access timers and alarms, and more.
With VoiceOver, as before, the Notification Center is accessed by performing a three-finger swipe down while focus is on the status bar at the top of the screen. THe Control Center can be accessed in the same way, except by performing a three-finger swipe up instead. These gestures are, however, very cumbersome, and it has long been a frustration that you could not easily access the Notification Center when using the iOS device one-handed.
To solve this problem, Apple has provided a fantastic new VoiceOver feature. If you touch the top center of your device’s screen, you will hear a sound similar to the pass-through gesture sound begin playing. If you then swipe straight down from that position, you will pull down the Notification Center, much as a non-VoiceOver user would. For this to work reliably, your finger should begin half on and half off the screen. On an iPhone, it may help at first to use the speaker cut in the glass as a landmark, and touch immediately below it.
Similarly, you can pull the Control Center up onto the screen from the bottom. In this case, your finger should rest immediately above the home button, and when you hear the sound, swipe up.
These gestures may take a few minutes of practice to master, but once you have them down, you’ll find them to be a much easier and more convenient way to access the Notification and Control Centers.
Some iPad conventions, which would work just as well on iPhones or iPod touch devices, have been absent from the smaller iOS products until now. In iOS 7, VoiceOver is more consistent across all your iOS devices. “Containers” can now be navigated between on iPhones and iPods, if you wish, using the rotor, and the VoiceOver audio cue indicating when the user moves from one logical section of the screen into another works as well.
One of the simplest changes to VoiceOver in iOS 7 has had the most profound impact on my usage. In the past, flipping the mute switch on your device to the On position would mute the auditory cues that VoiceOver users for focus change, control activation, view scrolling, and so on. If you were like myself and relied on these cues for the operation and navigation of your device, this was a problem when you wanted to use your device normally, but simply silence the ringer so as not to disturb your sleeping spouse, for instance. Fortunately, the mute switch no longer stops the VoiceOver sounds, and the ability to stop them is now located in VoiceOver settings. Turning VoiceOver sounds off in Settings prevents them from playing entirely, whether the iOS device is muted or not.
An optional rotor item can be used to turn the sounds on and off on the fly, if that’s something you find yourself needing or wanting to do frequently.
Talk to Me, Siri
The way VoiceOver interacts with Siri has also been tweaked in ways that dramatically improves the user experience. First, Siri’s voice output is now independent of VoiceOver, allowing for the use of Siri’s new, highly expressive voices.
Speaking of which, the Nuance voices now being used for Siri, particularly the American female voice, are very expressive. Apple has clearly gone to some lengths to give Siri a distinctive personality, and the new voices fit in nicely with it.
Even better, when using VoiceOver, Siri no longer repeats your own words back to you, but simply responds to them. This cuts down on the chatter and makes for more fluid conversations. I, for one, will not miss hearing, “You said…”, nineteen times a day.
As of this writing, Apple’s Siri server’s seem to be responding more quickly and accurately to requests from iOS 7 as well. I have yet to have Siri hang with an infinite rendition of the dreaded VoiceOver ticking sound letting you know that it’s waiting for a response from Siri’s servers.
The way in which VoiceOver allows the user to customize the language rotor has seen a facelift, and it is much simpler to use. You will find the new settings in the “Languages and Dialects” section of the VoiceOver settings. Additionally, VoiceOver’s default language is no longer dependent upon the system default language setting. This is especially useful, if like me, you’re an American who prefers to listen to the Australian voice.
For each individual voice you use, you can control whether or not the high quality voice is used, are told how much space the high quality voice is taking up on your device, and you can even control the speech rate for each voice independent of one another.
Help Me! Help Me!
A four-finger double-tap gesture now activates a VoiceOver help mode, similar to Keyboard and Trackpad help in OS X. In this mode, you can practice VoiceOver gestures without having to first navigate to the VoiceOver settings screen and selecting the corresponding item. To exit this mode, simply perform the scrub gesture.
App switching has changed visually in iOS 7, and Apple has taken the opportunity to improve how this works for VoiceOver users as well. Double clicking the home button brings up the new app switching interface. In the center of the screen is a miniaturized representation of a given app in the state in which you left it. This takes up most of the space on the screen, though if you touch to its left or right, near the edges of the screen, you will hear the apps that are previous or next in the switcher.
Touching the central app, you have several options. Flicking right/left will move you forward/backward through the apps in the switcher, scrolling as needed. Apps which are running in the background are noted as “running”. Double-tap an app to activate it. If you flick up or down, you will be presented with the options from the Actions rotor option, including a choice to close the app. Additionally, you can close an app by performing a three-finger swipe up gesture on it.
All in all, this greatly improves the experience of using the app switcher functionality with VoiceOver over previous versions of iOS.
Web content has seen some accessibility improvements. Much like VoiceOver on the Mac, iOS can now recognize and announce various Aria roles for page elements.
Safari has seen a significant overhaul to its interface in iOS 7, but these changes are not specific to VoiceOver users, though VoiceOver users will certainly see many of the same benefits as sighted users from these changes.
It’s the Little Things
Much of the interface, as it is presented by VoiceOver has been subtly polished and improved. Some apps, for instance, state what the numbers on their badges refer to. Mail may say that you have “5 unread messages”, or Reminders may tell you that you have “2 Tasks Due Today”.
In Safari, the share button is now labeled “Share”, as one would expect, rather than the confusing “Utilities” label it previously sported.
The Actions menu in the rotor has been improved and expanded, often using more contextually relevant wording and additional options. In Mail it contains a “Trash” option and a “More Options” one, and if performed on a thread, it will announce the number of messages which will be effected by the action. In the app switcher, it can be used to activate or close apps.
Unfortunately, you can no longer slide to unlock your iOS device with VoiceOver active. The Unlock control simply acts as a button now, and if you have the muscle memory to slide to unlock ingrained as a habit, you’re going to find this frustrating at best, and a real annoyance at worst. You can use double-tap-and-hold to activate the pass-through gesture and slide to unlock if you wish, but of course this takes longer than the old method, or than simply double-tapping the button as it is now.
As has been noted by tech pundits around the web during the beta cycle, apps take longer to open in iOS 7, allowing for the system to play its fancy new animation for app launches. The added time, in my opinion, is negligible, and I have not truly been inconvenienced by it, but it is something you will notice and it will surely frustrate some contingent of users.
Other Accessibility Notes
A number of new features to general accessibility have been added in iOS 7, and can be found, as usual, in Settings->General->Accessibility. Among these are a new Switch Control feature for users with motor impairments, controls for finer adjustment over text size and visual elements, features for users with hearing impairments, and more. The scope of the accessibility features on iOS, and the number of users they work to assist, continues to grow at an impressive rate.
In the End
If you have a device capable of running iOS 7, I can highly recommend this upgrade. While not all features will be available on older devices, most of the features covered here should work on iOS devices released in the last two years.
With each release of iOS, we see further refinements and new capabilities to Apple’s suite of accessibility features. The level of dedication to users with disabilities continues to be unmatched by any other company, and I’m excited to see what is in store for iOS 8 and beyond.
There has been a fare amount of discussion lately over the new diretTv update. A lot of people are having difficulties after updating when running the app with voiceover. If you run the app with voiceover on the first time it looks like nothing happens. This is I think because of a splash screen that comes up. I have recorded an audio boo with a work around to this problem. This does only effect the running of the app for the first time, this does not effect other features of the app. If you are having trouble with another aspect of this app, it’s not covered here.