2016-04-23 3 views
2

Как я могу получить доступ к кнопке воспроизведения/паузы с помощью пульта Siri и переопределить кнопку меню? В настоящее время я использую это, но он не работает для меня. Моя программа падает, когда я использую этот код, но только тогда, когда я называю его четыре примера, нажав кнопку паузы Кодеры в настоящее время позиционируется ниже didMoveToView рядом с touchesBeganКак получить доступ к кнопке воспроизведения/паузы Siri Remote и кнопке переопределения

let tapGesture = UITapGestureRecognizer(target: self, action: "handleTap:") 
tapGesture.allowedPressTypes = [NSNumber(integer: UIPressType.Menu.rawValue)] 
self.view.addGestureRecognizer(tapGesture) 
+0

Возможный дубликат [Как обнаружить Apple TV Siri дистанционного нажатия кнопок?] (Http://stackoverflow.com/q/32576834/2108547) –

+0

Swift пример компании Apple: [Использование Жест распознаватели] (https://developer.apple.com/library/tvos/documentation/General/Conceptual/AppleTV_PG/DetectingButtonPressesandGestures.html). –

+0

@DanielStorm Я пробовал это уже, но он сбой приложения –

ответ

0

я решил мою проблему, переместив переключатель tapRecognizer в моей ранее созданной функции обработчика касания поэтому код выглядит следующим образом Сейчас:

private func handleTouches(touches: Set<UITouch>) { 
    for touch in touches { 
     let touchLocation = touch.locationInNode(self) 
     lastTouch = touchLocation 

     let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) 
     tapRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.PlayPause.rawValue)]; 
     self.view!.addGestureRecognizer(tapRecognizer) 
    } 
} 

func handleTap(sender: UITapGestureRecognizer) { 
    if sender.state == UIGestureRecognizerState.Ended { 
     print("Menu button released") 
    }  
} 
1

Ваш вопрос вы вызываете функцию с именем handleTap: что получает параметр, но у вас нет функции с именем handleTap:. Вот что action представляет в этой строке:

let tapGesture = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) 

Изменить ваш func tapped() на:

func handleTap(sender: UITapGestureRecognizer) { 
    if sender.state == UIGestureRecognizerState.Ended { 
     print("Menu button released") 
    } 
} 
+0

Хорошо, я попробовал это, он все еще вызывает сбой. let tapGesture = UITapGestureRecognizer (target: self, action: "handleTap:") tapGesture.allowedPressTypes = [NSNumber (целое число: UIPressType.PlayPause.rawValue)]; ! self.view .addGestureRecognizer (tapGesture) функ handleTap (отправитель: UITapGestureRecognizer) { печать ("кнопка постучал") } –

+0

@ FerdinandLösch Что ошибка вы получаете? –

+0

все еще кажется, что селектор неправильно вызывает функцию GameScene handleTap:]: непризнанный селектор, отправленный в экземпляр 0x126733890 –

0

Я использую следующие для Swift 4 (в соответствии с вопросом: @selector() in Swift?)

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap(sender:))) 
tapGesture.allowedPressTypes = [NSNumber(integer: UIPressType.Menu.rawValue)] 
self.view.addGestureRecognizer(tapGesture) 

@objc func handleTap(sender: UITapGestureRecognizer) { 
    if sender.state == UIGestureRecognizerState.Ended { 
     print("Menu button released") 
    } 
}