微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Playground Book 中没有调用 pressesBegan

如何解决在 Playground Book 中没有调用 pressesBegan

我需要响应在物理键盘上按下的键,但没有在任何类上调用方法 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

解决方法

通过将 override var canBecomeFirstResponder { true } 添加到 UIViewController、在呈现控制器后调用 myViewController.becomeFirstResponder() 并在我不处理新闻时调用 super.pressesBegan 来解决

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。