簡體   English   中英

在tvOS中未結束的pressesEnd

[英]pressesEnded in tvOS not being called

我正在swift spritekit中為tvOS開發游戲。 有一個顯示SKScene B的視圖控制器A。我將pressesBegan和pressesEnded從A轉發到B。

在A中調用了pressesBegan並將其轉發給B,但在A中甚至沒有調用pressEndEnded。我不明白為什么嗎?

以下是在A中實現的功能。

override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
    if ((self.view as! SKView).scene?.isMemberOfClass(GameScene) == true){
        let gameScene = (self.view as! SKView).scene as! GameScene
        gameScene.pressesEnded(presses, withEvent: event)
    }

}

override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {

    if ((self.view as! SKView).scene?.isMemberOfClass(GameScene) == true){
        let gameScene = (self.view as! SKView).scene as! GameScene
        gameScene.pressesBegan(presses, withEvent: event)
    }
}

自己碰到這個。

我相信這是如果您重寫該方法:

- (void)pressesBegan:(NSSet<UIPress *> *)presses withEvent:(UIPressesEvent *)event

並且不要在方法的某處調用super:

[super pressesBegan:presses withEvent:event];

PressedEnded也永遠不會被調用。

我遇到的情況是有時調用了presssEnded,有時卻沒有,這是我能發現的唯一區別。

看起來有些bug不能及時調用pressesEnded 我注意到在pressesEndedpressesBegan上設置了一個斷點。 它始終在pressesBeganpressesBegan ,但僅在pressesEnded停止,等待一秒鍾繼續。

我能找到的唯一解決方法是在viewDidLoad中添加它:

let menuPressRecognizer = UITapGestureRecognizer()
menuPressRecognizer.addTarget(self, action: #selector(ShowListViewController.menuButtonAction))
menuPressRecognizer.allowedPressTypes = [NSNumber(value: UIPressType.menu.rawValue)]
self.view.addGestureRecognizer(menuPressRecognizer)

然后這個:

func menuButtonAction() {
    print("menu pressed")
    UIControl().sendAction(#selector(URLSessionTask.suspend), to: UIApplication.shared, for: nil)
}

順便說一下,這是3。

我也遇到過這種情況。

經過一些測試之后,似乎在釋放“選擇”按鈕時,tvOS調用pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?) pressesCancelled(_ presses: Set<UIPress>, with event: UIPressesEvent?)

至於為什么,我不知道。 每按一次按鈕,我所做的任何操作都沒有什么不同。 可能是tvOS中的錯誤。

通過跳轉到pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?)並找到此注釋pressesEnded(_ presses: Set<UIPress>, with event: UIPressesEvent?)我找到了該解決方案:

對於每個正在處理的印刷機,您的響應者將收到pressesEnded:withEvent或pressesCancelled:withEvent :(在pressesBegan:withEvent:中收到的印刷機)。

這里是一個鏈接到我問同一個問題的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM