swift - pressesBegan 未在 Playground Book 中调用

标签 swift sprite-kit swift-playground mac-catalyst

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

UPDATE 这是代码,我用 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

最佳答案

通过向 UIViewController 添加 override var canBecomeFirstResponder { true } 解决,在呈现 Controller 并调用 后调用 myViewController.becomeFirstResponder() code>super.pressesBegan 当我不处理媒体时

关于swift - pressesBegan 未在 Playground Book 中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67128452/

相关文章:

swift - 使用 Xcode Playground 的 Swift 代码中的 EXC_I386_GPFLT

ios - 自定义框架中的完成方法

ios - 解析没有有效凭据的登录过程

ios - Tableview Xib Shadow Swift

ios - SKPhysicsJoint 删除节点之间的连接线

swift - Action 完成后做一些事情

ios - 无法在 Playground 中加载 UITableView

ios - Swift CoreData sortdescriptions 不起作用

swift - 防止用户在 UIViewController 下与 SKScene 交互

swift - 如何跳出函数外的 guard 语句?