tvOS: pressesEnded вызывается с перерывами

Я создаю подкласс UIButton. Причина, по которой я пытаюсь перехватить касание, заключается в том, что я, похоже, не могу найти другой способ получения событий "нажимай вверх" или "заканчивайся" для стандартного UIButton в tvOS. Если бы я мог найти способ сделать это, мне не пришлось бы беспокоиться о решении ниже.

pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) Кажется, мне не звонят каждый раз, когда я отпускаю кнопку "Выбрать" на пульте Apple TV Remote.

pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) вызывается каждый раз без проблем. Я прикрепил свой код ниже. Есть идеи, что может быть причиной этой проблемы?

class EVLPTZButton: UIButton
{
  var command: PTZCommand!
  var delegate: EVLPTZButtonCommandDelegate?

  override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?)
  {
    super.pressesBegan(presses, with: event)

    delegate?.ptzButton(pressesBeganFor: self, with: command)
  }

  override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?)
  {
    super.pressesEnded(presses, with: event)

    delegate?.ptzButton(pressesEndedFor: self)
  }
}

1 ответ

Решение

После еще одного тестирования кажется, что когда кнопка "выбрать" отпущена, tvOS вызывает либо pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) ИЛИ ЖЕ pressesCancelled(_ presses: Set<UIPress>, with event: UIPressesEvent?),

Я нашел это решение, перейдя к определению pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) и найти этот комментарий:

Ваш респондент будет получать pressesEnded:withEvent или pressesCancelled:withEvent: за каждое нажатие, которое он обрабатывает (те нажатия, которые он получил в pressesBegan:withEvent:).

Другие вопросы по тегам