Как узнать, когда сфокусированный элемент перефокусирован в голосе поверх (iOS) - PullRequest
0 голосов
/ 19 июня 2019

Я хочу что-то сделать, когда снова сфокусирован на элемент закадрового голоса.

Функция accessibilityElementDidBecomeFocused() вызывается только тогда, когда элемент фокусируется в первый раз.

Когда мы снова нажимаем на один и тот же сфокусированный элемент, эта функция не вызывается. Кто-нибудь может предложить какое-то решение?

1 Ответ

0 голосов
/ 25 июня 2019

Кто-нибудь может предложить какое-нибудь решение?

Вот несколько идей на лету, чтобы обнаружить одно касание на одном и том же сфокусированном элементе:

  • Создайте переменную nbSelections, которая будет подсчитывать количество однократных нажатий.
  • Создайте распознаватель жестов касания для вашего элемента, чтобы увеличить количество нажатий, например:

    let tap = UITapGestureRecognizer(target: self,
                                     action: #selector(addTapCounter(info:)))
    tap.numberOfTapsRequired = 1
    self.addGestureRecognizer(tap)
    
  • Добавьте черту, которая позволит поймать простое нажатие прямо на элементе:

    override var accessibilityTraits: UIAccessibilityTraits {
        get { return .allowsDirectInteraction }
        set {  }
    }
    
  • Установите nbSelections = 0, когда элемент теряет фокус:

    override open func accessibilityElementDidLoseFocus() { nbSelections = 0 }
    

Объединение этих идей с неофициальным протоколом UIAccessibilityFocus может быть хорошим направлением исследований для достижения вашей цели.

Однако в этом техническом решении предполагается, что однократное нажатие выполняется непосредственно на самом элементе (- специфично для черты) , а не где-либо еще (я не посмотрим, как поймать это событие с головы до головы) .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...