Accessibility

webRios follows the accessibility settings you have already chosen on your device. There is nothing to turn on inside the app: change a setting in iOS Settings and the app responds, usually immediately.

This page describes what each iOS setting changes, and the places where a code editor behaves differently from an ordinary app.

VoiceOver

Every control has a spoken name. Icon-only buttons that would otherwise be read as their symbol name (the data frame pager, the file browser’s search and navigate-up buttons, the clear-filter and clear-search buttons) are named for what they do. The pager announces “Previous page” rather than “chevron backward”.

Rows announce as buttons and read their whole contents in one pass. A file row gives its name, size, and modification date together. A variable row gives its name, type, and value. A plot thumbnail gives its title and capture time.

Console output announces its kind before its text, so an error reads as “Error: could not find function” rather than leaving you to infer severity from color alone.

Quick actions

Operations that are normally reached by a long press are also available in VoiceOver’s Actions rotor, so you never need to long-press to reach them. Swipe left or right on the rotor to find them, then swipe up or down to choose.

On a variable in the Environment, the rotor offers Summary, Structure, Head, Print, Plot (for anything that is not a function), Inspect, Watch or Unwatch, and Delete.

On a file, it offers Run Script for .R files, and Open in New Window on iPad. Rename and Delete are already there from the row’s swipe actions.

Larger text

The app follows Settings > Accessibility > Display & Text Size > Larger Text, including the larger accessibility sizes. Buttons, labels, list rows and settings pages all grow with it, and panes that contain text grow with their contents rather than clipping them.

Your R code is the exception, and deliberately so. The editor and console render code in a monospaced face at a size you set in Settings > Appearance > Font Size, with separate values for each. Code is laid out in columns. Tying it to the system text size would reflow it in ways that make it harder to read, not easier. Set the size that suits you and it stays put.

Increase Contrast

With Settings > Accessibility > Display & Text Size > Increase Contrast turned on, webRios raises the contrast of every color it draws text in until it meets the WCAG AA standard of 4.5:1 against its background, and strengthens separators to 3:1.

This applies to any theme, including custom ones and imports from VS Code or RStudio. Only text colors change. Backgrounds and selection highlights stay as they are, so a theme still looks like itself.

The two Default themes already meet AA without it.

Reduce Motion

With Settings > Accessibility > Motion > Reduce Motion turned on, animations that would slide or spring instead cross-fade: new plots in the gallery, the find-and-replace bar, the editor’s inline panels, and the detached plot zoom. The visual feedback is still there, without the motion.

Differentiate Without Color

With Settings > Accessibility > Display & Text Size > Differentiate Without Color turned on, console output that carries a severity gets a symbol as well as a color: an octagon for errors and anything R wrote to standard error, a triangle for warnings. Ordinary output and your own input are left alone, since marking everything would only add noise.

Themes and contrast

The two Default themes are ours, and both meet WCAG AA as shipped.

The other seven built-in themes (Dracula, Solarized Light and Dark, Monokai, One Dark, GitHub Light, and Nord) are faithful reproductions of palettes from other editors. Some place comments below AA contrast, which is by design. We have not “corrected” them, because a theme that does not look like the one you picked is not that theme. Turn on Increase Contrast and you get full contrast without giving up the palette.

Anything missing?

If something does not work as described, or a control is not reachable the way you need, please get in touch. Accessibility problems are treated as bugs, not feature requests.