Succescriterium 2.1.4 – Ongewenste sneltoetsen

Zorg dat sneltoetsen niet ongewenst door hulpmiddelen kunnen worden geactiveerd. Veel hulpmiddelen bootsen toetsaanslagen na om acties uit te voeren. Het kan hierdoor voorkomen dat er ongewenst sneltoetsen worden geactiveerd. Maak het mogelijk om sneltoetsen te wijzigen of uit te zetten.

Impact

Er zijn gebruikers met hulpsoftware die gebruik maken van sneltoetsen. Indien jouw app dezelfde sneltoetsen gebruikt kan de gebruiker onbedoelt acties uitvoeren.

Controleren

Worden er sneltoetsen gebruikt die onbedoeld geactiveerd kunnen worden?

Dit kan getest worden met het toetsenbord.

Oplossing

Op iOS wordt vaak gebruik gemaakt van de pressesBegan en pressesEnded methodes om sneltoetsen te activeren. Je kunt beter gebruik maken van UIKeyCommand om sneltoetsen toe te voegen. Door modifierFlags toe te voegen weet je zeker dat sneltoetsen niet ongewenst geactiveerd worden. Daarnaast wordt de snelkoppeling ook getoond bij het lang indrukken van de command toets.

let find = UIKeyCommand(
    input: "f", 
    modifierFlags: .command, 
    action: #selector(findContent), 
    discoverabilityTitle: "Find content"
)

override var keyCommands: [UIKeyCommand]? {
    return [find]
}

@objc private func findContent() {
    // Logic to find content
}

Op Android wordt vaak gebruik gemaakt van de dispatchKeyEvent en onKeyUp methodes om sneltoetsen te activeren. Bij beide methodes krijg je een referentie naar een KeyEvent object. Gebruik de isShiftPressed of isCtrlPressed methode om te zorgen dat sneltoetsen niet ongewenst geactiveerd worden.

override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean {
    return when (keyCode) {
        KeyEvent.KEYCODE_F -> {
            if (event.isCtrlPressed) {
                findContent()
                true
            }
        }
        else -> super.onKeyUp(keyCode, event)
    }
}

private fun findContent() {
    // Logic to find content
}

Referenties

Meer succescriteria