Implementation Details
Passcode Incorrect Behavior
BNNoticeView Dismissal Options
There are three options for BNNoticeView dismissal behavior:
- A touch outside of the notice view dismisses the notice view. If the touch is on a button or other control, the touch is handled by that control. (current iOS app behavior)
- A touch outside of the notice view dismisses the notice view. The touch is not processed by any other UI element.
- A touch outside of the notice view is ignored. The notice view must be dismissed by tapping the [x] button. (current Android app behavior)
For reference, the iOS system passcode view behaves as follows:
- On incorrect passcode, a message is displayed below the PIN view and receives focus. The PIN view receives focus after the announcement is complete1. Since there is no blocking or modal view, the issues we have with the
BNNoticeVieware avoided. Option 1 above is closest to this behavior.
1: There is a bug in iOS that prevents the announcement from completing. Focus is switched to the PIN view almost immediately, thus cutting off the error announcement.
VoiceOver Focus after Dismissal
On dismissal of the BNNoticeView, the Accessibility focus is set to the instructionLabel. Depending on the dismissal option implemented, the event flow for Accessibility users will be different.
- If the user dismisses via the [x] button, the instruction text is read.
If the user dismisses via tapping on a keypad button, the keypad number is read and the instruction text is not read. - The instruction text would be read after the notice is dismissed. Either by tapping outside the notice view, or via the [x] button.
- The user dismisses via the [x] button, the instruction text is read.
Shootout
I’m not really sure of the best way to proceed.
- pros: more efficient. similar to iOS system passcode. no code changes.
cons: can dismiss two different ways. vision impaired user has no idea that there is a semi-modal dialog there. - pros: ensures that the instruction is always read after dismissal
cons: a tap outside does nothing. we are still semi-modal. - pros: fully modal. consistent with Android.
cons: fully modal, user must explore to know they have to acknowledge.
Decision
For now, I’m going with Option 3, the Android equivalent. Less downsides. And consistent with everything in iOS, except for how the iOS passcode entry works. The iOS app needs to become more self-consistent in notice view handling. This may be the first step.