2

如何使用 Siri 遥控器访问播放/暂停按钮并覆盖菜单按钮?我目前正在使用它,但它对我不起作用。当我使用此代码时,我的程序崩溃,但仅当我将其称为四个按下暂停按钮的示例时,编码器当前位于 touchesBegan 旁边的 didMoveToView 下方

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

3 回答 3

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")
    }
}
于 2016-04-24T14:01:04.110 回答
1

我对 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")
    }
}
于 2017-10-25T12:56:53.427 回答
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")
    }     
 }
于 2016-04-25T21:56:08.613 回答