我正在尝试在用户点击Apple TV遥控器上的暂停/播放按钮时创建一个动作。我查看了文档,但Apple推荐的代码不起作用。这是我的代码如下。有人可以告诉我我做错了什么吗?需要考虑的事项: 我正在使用AVPlayerMovieController&我的代码中确实有另一个手势识别器,但是它是一个轻扫手势,这个方法被调用,而不是暂停/播放。有人可以帮忙吗?
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
tap.allowedPressTypes = @[[NSNumber numberWithInteger:UIPressTypePlayPause]];
[self.view addGestureRecognizer:tap];
谢谢
答案 0 :(得分:6)
您可以覆盖pressEnded方法:
override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
for press in presses {
if(press.type == UIPressType.PlayPause) {
// Do what you want
// ...
} else {
super.pressesEnded(presses, withEvent: event)
}
}
}
答案 1 :(得分:3)
我有同样的问题,我找到了解决方案,但说实话我根本不喜欢它(但至少它对我有用)。
在视图中我添加了加载
let tapRecognizer = UITapGestureRecognizer(target: self, action: "playPauseButtonPressed:")
tapRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.PlayPause.rawValue)];
self.view.addGestureRecognizer(tapRecognizer)
UIApplication.sharedApplication().beginReceivingRemoteControlEvents()
我实施了两种方法:
func playPauseButtonPressed(sender: AnyObject) {
self.buttonPlayClicked(buttonPlay)
print("PRESSED")
}
override func remoteControlReceivedWithEvent(event: UIEvent?) {
self.buttonPlayClicked(buttonPlay)
print("EVENT")
}
我很确定我做的不对,但我无法在任何地方找到解决方案。 这只是我的即兴创作,对我有用。
希望这有帮助。
答案 2 :(得分:2)
我使用了以下内容,并且我的识别器被称为。我认为您需要获取PlayPause UIPressType的rawValue而不仅仅是PlayPause UIPressType。
let playPauseRecognizer = UITapGestureRecognizer(target: self, action: "playPauseRecognizer:")
playPauseRecognizer.allowedPressTypes = [NSNumber(integer: UIPressType.PlayPause.rawValue)]
view.addGestureRecognizer(playPauseRecognizer)
答案 3 :(得分:0)
我遇到同样的问题,即播放/暂停事件在视图控制器中不起作用。解决方法是在appdelegate中的UIWindow中添加播放/暂停UITapGestureRecognizer,并使用通知广播事件。