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:).