Как добавить обнаружение нажатия кнопки в tvOS?


person Alex Chesters    schedule 10.09.2015    source источник
comment
Вы читали документацию?   -  person Daniel Storm    schedule 10.09.2015
comment
Да, @DanielStorm, теперь у меня есть функция pressesEnded, которая по какой-то причине никогда не вызывается.   -  person Alex Chesters    schedule 10.09.2015


Ответы (5)


Автор руководства здесь, метод добавления интерактивности в приложения на основе TVML заключается в использовании addEventListener для рассматриваемого элемента DOM. Вы можете найти элемент DOM, удерживая ссылку на него во время создания или используя getElementById или другие подобные методы JavaScript DOM. Кроме того, я должен упомянуть, что добавил «Часть 2» к упомянутому учебнику, в котором это является основным направлением.

Вот пример того, как вы можете сделать это в JS, предполагая, что myDOMElement — это переменная, которая ссылается на вашу кнопку как на элемент DOM.

  myDOMElement.addEventListener("select", function() { alert("CLICK!") }, false);

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

person Jameson    schedule 11.09.2015
comment
Спасибо, @jameson! Работает отлично, спасибо за уроки :-) - person Alex Chesters; 11.09.2015
comment
В шаблонах, которые я видел, его нет, но вы определенно можете добавить прослушиватель событий для play, чтобы обнаруживать нажатие кнопки «Воспроизведение/Пауза». - person Nick; 16.12.2015
comment
здравствуйте, если в моем документе есть две кнопки "ОК" и "Отмена", как я могу обнаружить нажатие одной из них? новичок в JS - person Wingzero; 16.11.2017

Нажатия кнопок аналогичны событиям UITouch. Взгляните на обратные вызовы UIPressEvent в заголовке UIResponder. UIViewControllers являются частью цепочки респондентов, поэтому вы можете добавить обратные вызовы в свой контроллер представления, подобные этому:

- (void)pressesEnded:(NSSet<UIPress *> *)presses withEvent:(nullable UIPressesEvent *)event {

    UIPress *anyPress = [presses anyObject];
    // handle press event

}
person Jess Bowers    schedule 10.09.2015
comment
Спасибо! Теперь у меня есть эта функция, которая не вызывается, знаете почему? - person Alex Chesters; 10.09.2015
comment
Я пытаюсь обработать прикосновение к UIButton на tvOS с помощью этого метода, но он не работает. Не должен ли он перехватывать нажатие кнопки, поскольку я использую UIPressEventSelect для выбора кнопки? - person coernel; 27.11.2015

Вы не должны использовать «UIControlEvents.TouchUpInside» в tvOS, поскольку это не делает того, что вы могли бы ожидать: вместо этого вы, вероятно, захотите использовать «UIControlEvents.PrimaryActionTriggered».

TouchUpInside запускается фактическими прикосновениями, что на самом деле не то, что вы хотели здесь: если вы хотите, чтобы кнопка Select на пульте дистанционного управления вызывала вашу кнопку, вы должны использовать PrimaryActionTriggered.

person iKushal    schedule 02.11.2015

Вы можете добавить действие к UIButton так же, как и в iOS, в соответствии с Документы Apple

Экземпляр класса UIButton реализует кнопку на сенсорном экране. Кнопка перехватывает события касания и отправляет сообщение о действии целевому объекту при нажатии. Методы установки цели и действия унаследованы от UIControl. Этот класс предоставляет методы для установки заголовка, изображения и других свойств внешнего вида кнопки. Используя эти средства доступа, вы можете указать различный внешний вид для каждого состояния кнопки.

person Adnan Aftab    schedule 10.09.2015

Swift 3 версия кода @jess-bowers:

override func pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) {
    let anyPress: UIPress? = presses.first
}
person Justin Vallely    schedule 27.04.2017