swiftvoiceoveruiaccessibility

iOS accessibility pressesEnded not triggered by the space bar


I am working with VoiceOver and an external keyboard. I need to detect when an user activates an element using keyboard or tap.

To achieve this, I have implemented:

public override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
        guard let key = presses.first?.key else { return }
        switch key.keyCode {
        case .keyboardSpacebar:
            addSelectedTraits()
        default:
            super.pressesEnded(presses, with: event)
        }
}

The problem is that the space bar is not triggering this function as any other keys do.

What could be the problem? Notice that I have activated the full access keyboard on my iPhone, this makes the space bar able to perform activation actions.


Solution

  • The cause is having activated the full access keyboard due to space key has now an specific action.

    Now, I can trigger VoiceOver when selecting using space keyboard pressing control+option+space, so I don't need pressesEnded anymore.