![](/img/trans.png)
[英]cellForRowAt not being called But numberOfSection and numberOfRowsInSection is being called
[英]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
。 我注意到在pressesEnded
和pressesBegan
上設置了一個斷點。 它始終在pressesBegan
上pressesBegan
,但僅在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.