在SKNode touch上显示键盘

时间:2015-02-17 15:39:07

标签: ios swift uitextfield sprite-kit

我正在尝试在iOS上的游戏中进行注册场景。到目前为止我所拥有的是:

Game Registration Scene

由于我无法将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!)

1 个答案:

答案 0 :(得分:0)

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

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

您还可以通过将背景颜色UITextField值设置为小于默认alpha来使1半透明:

txtField.backgroundColor = UIColor(red: 125/255, green: 125/250, blue: 125/250, alpha: 0.5)