У меня есть кнопка, которая реагирует на различные щелчки мыши (обычный щелчок, щелчок правой кнопкой мыши, управление + щелчок, опция + щелчок, команда + щелчок ...) для отображения различных всплывающих меню.Поскольку пользователям VoiceOver было бы неудобно использовать физическую мышь, я хотел бы сопоставить их с различными действиями VoiceOver.
Однако я не получаю ожидаемых результатов.Может ли кто-нибудь помочь мне лучше понять, чего мне не хватает?Вот что я обнаружил до сих пор.
Если я подкласс NSButton
и переопределить следующие функции, они работают нормально.За исключением того, что есть одна странная вещь.Если я нажимаю vo + command + space, чтобы вызвать список доступных действий, VoiceOver говорит «Действие 1» вместо «Показать меню».
override func accessibilityPerformPress() -> Bool {
print("Pressed!")
return true
}
override func accessibilityPerformShowAlternateUI() -> Bool {
print("Show Alternate UI")
return true
}
override func accessibilityPerformShowMenu() -> Bool {
print("Show Menu")
return true
}
В том же подклассе NSButton
, если я также переопределил функцию accessibilityCustomActions
, "Do Something" никогда не появляется в списке доступных действий, когда я нажимаю vo + command + space.
override func accessibilityCustomActions() -> [NSAccessibilityCustomAction]? {
let custom = NSAccessibilityCustomAction(name: "Do Something", target: self, selector: #selector(doSomething))
return [custom]
}
@objc func doSomething() -> Bool {
print("Done something.")
return true
}
Если я подкласс NSView
вместо NSButton
и переопределю те же функции из # 1, все работает нормально.В отличие от первого случая, даже VoiceOver правильно говорит «Показать меню» для действия с accessibilityPerformShowMenu
вместо «Действие 1».
в том же подклассе NSView
, если я переопределю accessibilityCustomActions
вместе с accessibilityPerformPress
, accessibilityPerformShowMenu
или accessibilityPerformShowAlternateUI
, "Do Something" не появится в списке действий.
Однако, «Do Something» появляется в списке действий, если я просто перезаписываю accessibilityCustomActions
без accessibilityPerformPress
, accessibilityPerformShowMenu
и accessibilityPerformShowAlternateUI
.
Я попытался создать еще одно действие с именем «Press», которое делает то же самое при нажатии vo + пробел, и включая возвращаемое значение accessibilityCustomActions
.Тем не менее, Vo + space не вызывает действие.Вместо этого мне пришлось нажать vo + команда + пробел, а затем выбрать «Нажать».Я предполагаю, что действие просто имеет название «Пресса», но на самом деле оно не связано с vo + space.Я не уверен, как я могу на самом деле сделать это конкретное пользовательское действие, чтобы ответить на vo + space.
Буду признателен, если кто-нибудь поможет мне реализовать accessibilityCustomActions
, а также accessibilityPerformPress
, accessibilityPerformShowMenu
и accessibilityPerformShowAlternateUI
вместе в NSButton
.
Большое спасибо!