Question from a developer: what’s your preference for line navigation behaves when using the rotor?

App Development

Hi! (This is my first post here, so apologies if this is the wrong forum for this question.)

I’m developing an iOS app for reading ePubs (and possibly other formats, like PDF). I’m currently working on making it as accessible as I can.

While working on this, I’ve noticed that behavior for line navigation can differ between apps. Some apps may navigate by paragraphs, others may navigate by what could visually be considered a line. What behavior do you actually prefer when navigating by lines?




Submitted by Travis Roth on Sunday, April 7, 2019

If I understand your question, you're asking what should the default flick order or object contain for a reading view? For a reading app which is what it sounds like you're making I think I'd copy Apple such as Apple News. That seems to put each paragraph as an object, so each VoiceOver flick gesture reads a paragraph. VoiceOver's rotor does have a Line navigation option already which presumably reads an actual visual line worth so one can navigate inside the paragraph object this way. (The rotor also contains Character and Word.) If possible try to ensure these VoiceOver reading options work in your reading view as well.

To be clearer: yes, I was referring to Voiceover’s line navigation. Its behavior seems to differ between apps, so I was curious what the preferred behavior is amongst Voiceover users when reading long-form content this way.

Submitted by Malthe on Sunday, April 7, 2019


I think this is exactly the right forum for such a post. Welcome!

If I understand you correctly, you mean VO behaviour when switching to "lines" in the rotor, then flicking up and down.
If so, I much prefer it to be literal lines, or however Apple handles it in the mail app and when editing text fields.


Submitted by Matt Curtis on Sunday, April 7, 2019

In reply to by Malthe

Just checked out how Mail does it. It navigates by visual lines (where each line breaks or wraps when it hits the edges of its container or the screen).

Something I wonder about is whether or not this behavior is disorienting — a visual line like this isn’t a complete sentence or idea (often times a line break can appear in the middle of a word, making it even more confusing). Am I wrong on this?

Submitted by Malthe on Sunday, April 7, 2019

Interesting question.
I've never experienced a line break happening in the middle of a word, though I can see how that is not ideal. Does wrapping words make sense in such a situation?
Apart from that, I find it useful if line navigation behaves consistently from app to app.

Apps that handle reading text really well in my opinion include Voice Dream Reader and Amazon's Kindle app, though I tend to use Voice Dream's built-in reading functionality the most. It's implementation of a text element might be worth a look at anyway, though.
Actually, in your case, where I assume you want VoiceOver to do the reading, taking a look at Kindle's implementation might make sense.
Hope this makes sense to you


Submitted by Malthe on Sunday, April 7, 2019

Quick note: I don't believe paragraphs are available in the rotor, but Voice Dream has gotten around this by making a UI element to choose navigation unit, and putting paragraph in there.
However, if VoiceOver is to do the reading, what comment #1 suggested is also a great way to handle that.

Submitted by Travis Roth on Sunday, April 7, 2019

In screen reader world, line usually means the visual line length. This enables the user to get a feel for layout and appearance. It is probably more critical in word processing than reading, but that's the general idea. Some screen readers can read by sentence although this may depend on the underlying app supporting it as well. I've not seen this ability by VO.

Submitted by Matt Curtis on Sunday, April 7, 2019

In reply to by Travis Roth

Thanks for the explanation, Travis! That helps me understand the purpose navigating by visual line serves.

Malthe, I checked out how Kindle handles VO text navigation. One thing that I noticed is that it offers no text selection (and therefore no copy/paste/highlight/etc.). There also doesn't appear to be any way to navigate between lines, images, or headings. Are those not downsides?

After some research it should definitely be possible to add the ability to navigate by sentence or paragraph. If I were to go that route and add them, how useful would it be?

Submitted by Dawn on Sunday, April 7, 2019

Hello! Is there a chance that your app will read books from Overdrive? I'm interested. And how much (if anything) will it cost? Can you please post here when your app is done? I'd really love to try it.

Submitted by Matt Curtis on Sunday, April 7, 2019

In reply to by Dawn

Hi Dawn,

Overdrive is definitely on my radar. I'd love to support it if possible.

No price has been nailed down yet, but I'll definitely be posting here about it in the future as development continues. :)

Let me know if you have any other specific requests!


Submitted by Travis Roth on Sunday, April 7, 2019

I don't think navigating by line is directly related to headings, etc. Kindle seems to strip that formatting information, and it is definitely not optimal. If your source formats do have that information , especially headings, maintaining that is quite useful for speeding up finding sections just as they are intended to do.

Submitted by Chris on Monday, April 8, 2019

I agree with what everyone else has been saying. Use the lines rotor option to move by visual lines, just as it does in other apps or when using the arrow keys in Windows or macOS. As for moving by other elements like sentences and paragraphs, can you use VoiceOver custom rotor options? I'm not a developer, but the feature should allow you to do this.

As for selecting text, you may have to come up with your own way of doing that like in VoiceDream Reader. As far as I know, the default selection tools Apple provides with VoiceOver only let you select by character, word, line, or selecting everything.

Submitted by Malthe on Monday, April 8, 2019

You're absolutely right about the Kindle aspect. Using rotor for text selection would indeed be optimal. You can navigate by lines, but navigating by headings is not present in the text view, one has to access the menu for that, and even then it seems to only be chapters. That is quite a downside!
I agree with everything in post 11.


Submitted by Jim Homme on Monday, April 8, 2019

Navigation for paragraph, sentence, word, and character are all ideal. I wish VoiceDream could navigate by character. That would make it easier to read texts on programming.

Submitted by Malthe on Monday, April 8, 2019

@14 as a work around for that, you can navigate to the text element with VoiceOver, and read the passage in question character by character using the normal rotor options.

Submitted by Dawn on Monday, April 8, 2019

Thank you!! I'll definetely do that! You think you could please also look into Hoopla?
I currently read Overdrive books from my Kindle app. But, not all overdrive books are in Kindle format. Some are in audio format, and some are in traditional Overdrive format. Can't jell you what the format for audio books is on Overdrive or Hoopla. And i don't know what format Hoopla uses for other books. And both apps are not very accessible.
I look forward to seeing more posts about this app. Who know? Maybe since you say you plan on supporting Pdf. and other file types, maybe I could use this app as a document reader.

Submitted by Remy on Monday, April 8, 2019

I also agree that line-by-line navigation when using the line router is best. Ideally the paragraphs could be treated as actual objects, which means a flick left or right will handle those. ANyone who wants to read the whole document can just use the say-all command. That said I absolutely can't believe there's no way to navigate by sentence and paragraph using Voiceover yet. It's 2019! One would thing such features would be standard at this point. Text editing is still way, way behind a PC (can't say anything about a Mac). Even Voice Dream Writer, a pretty decent app in many ways is highly limited by an inability to import anything but plain text.

Submitted by Matt Curtis on Wednesday, April 10, 2019

In reply to by Dawn

@Dawn: This is my first time hearing about Hoopla! I'll have to look into it.

@Remy and all: thanks for the input, it's invaluable. This forum looks to be a fantastic place to get feedback — I'll definitely be hanging around!