在 SKNode touch 上显示键盘

show keyboard on SKNode touch

我正在尝试在 iOS 上的游戏中创建一个注册场景。我到目前为止是这样的:

因为我无法将 UITextField 放入我拥有的场景中,所以我尝试将激活键盘的 SKNodes 置于触摸状态。如果有人可以帮助我将 UITextFields 放入我的游戏场景中,那将非常有用(因为它更容易获得注册场景,并且代码更少,并且对此有原生支持)。

到目前为止我的代码是这样的:

let nameForm:SKSpriteNode = SKSpriteNode(imageNamed: "RegistrationScene_TEST_textviews")
let usernameForm:SKSpriteNode = SKSpriteNode(imageNamed: "RegistrationScene_TEST_textviews")
let passwordForm:SKSpriteNode = SKSpriteNode(imageNamed: "RegistrationScene_TEST_textviews")
let passwordForm2:SKSpriteNode = SKSpriteNode(imageNamed: "RegistrationScene_TEST_textviews")

当有人接触这些节点中的任何一个时,应该使用如下方法进行管理:

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    let touch = touches.anyObject()! as UITouch
    let location = touch.locationInView(self.view)

    for touch:AnyObject in touches{
        if CGRectContainsPoint(nameForm.frame, touch.locationInNode(self)){
            //Function to display the keyboard
            //Function that saves the keystroke
            //Function to display a nameLabel with the saved keystroke
        }
        //same for the other Forms

        //methods for the buttons (DONE)
    }
}

如果有任何其他方法可以将文本输入到游戏中(以保存游戏统计信息或对游戏玩法有用的东西)请告诉我,我们将不胜感激

编辑:

根据 Cristian Woerz 的说法,我做了以下操作,这解决了我的问题。

let txtField:UITextField!

txtField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 30));
self.view?.addSubview(txtField!)

通常,您不应在 SpriteKit 游戏中使用 UIKit 元素。但是对于这个问题,您可以使用 UITextfield 并将其添加到您的视图中:

var txtField: UITextField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 30));
self.view.addSubview(txtField)

您还可以通过将背景颜色 alpha 值设置为小于默认值 1:

来使 UITextField 半透明
txtField.backgroundColor = UIColor(red: 125/255, green: 125/250, blue: 125/250, alpha: 0.5)