在 Playground Book 中未调用 pressesBegan

Posted

技术标签:

【中文标题】在 Playground Book 中未调用 pressesBegan【英文标题】:pressesBegan not called in Playground Book 【发布时间】:2021-04-16 15:53:31 【问题描述】:

我需要响应物理键盘上的按键,但方法pressesBegan 没有在任何类上调用。我尝试将它放在我的 SKScene 和 ViewController 中,但它没有被识别

更新 这是代码,我已经用fatalError() 替换了逻辑,所以当pressesBegan 被调用时,这本书会崩溃。因为它没有崩溃,所以 pressesBegan 没有被调用

其余代码与响应者无关

import Foundation
import SpriteKit
import SceneKit
import UIKit

public class GameScene: SKScene 
    
  // ... some code
    
    public override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) 
        fatalError()
    
    
    /// Some more code...



class GameViewController: UIViewController 
    
    override func loadView()
        self.view = sceneView
    

    let sceneView = SKView(frame: CGRect(x:0 , y:0, width: 1920, height: 1080))
    override func viewDidLoad() 
        if let scene = GameScene(fileNamed: "GameScene") 
            // Set the scale mode to scale to fit the window
            scene.scaleMode = .aspectFill
            
            // Present the scene
            sceneView.presentScene(scene)
        
    
    
    public override func pressesBegan(_ presses: Set<UIPress>, with event: UIPressesEvent?) 
        fatalError()
    


let viewController = GameViewController()
viewController.view.becomeFirstResponder()

PlaygroundPage.current.liveView = viewController
PlaygroundPage.current.needsIndefiniteExecution = true

【问题讨论】:

您需要显示更多代码 @aheze 更新了问题:) 【参考方案1】:

通过在UIViewController 中添加override var canBecomeFirstResponder true 解决,在展示控制器后调用myViewController.becomeFirstResponder(),当我不处理新闻时调用super.pressesBegan

【讨论】:

以上是关于在 Playground Book 中未调用 pressesBegan的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 Apple 的 Playground Book 模板时出错

在 Xcode Playground 中打印每个数组项?

Swift Playground:让 ViewController 调用 presentViewController

在哪里可以找到正确的 HTTP 端点以在 Oauth2 Playground 中测试 Google Ads API 调用?

swift playground / deinit 中的内存泄漏未一致调用

对 On Premise Exchange 的 Graph API 调用仅适用于 Playground