在 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)
我正在尝试在 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)