我正在开发一个代码,允许用户通过将文本分成UI文本字段来更新SKLabelNode,如下所示。 理想情况下,我希望在输入时更新文本,一次一个字母。但我对如何做到这一点有点困惑? 目前我只有另一个按钮" labelNode2"按下时更新文本。
import SpriteKit
import GameplayKit
class GameScene: SKScene, UITextFieldDelegate {
private var field : UITextField?
lazy var labelNode = self.childNode(withName: "labelNode") as? SKLabelNode
lazy var labelNode2 = self.childNode(withName: "labelNode2") as? SKLabelNode
override func didMove(to view: SKView) {
labelNode?.text = "Test"
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch: AnyObject in touches {
let largeLocation = touch.location(in: self)
let nodes = self.nodes(at: largeLocation)
for node in nodes {
if node.name == "labelNode" {
labelNode?.text = "hello"
if (field == nil) {
field = UITextField()
field?.frame = CGRect(x:100,y:100, width:100, height:30)
field?.delegate = self;
field?.backgroundColor = .red
field?.isHidden = true;
self.view?.addSubview(field!)
}
field?.text = labelNode?.text
field?.becomeFirstResponder
}
else {
field?.resignFirstResponder
//To hide keyboard
}
if node.name == "labelNode2" {
labelNode?.text = field?.text
}
}
}
}
}
答案 0 :(得分:0)
首先,我必须将你的行start()
注释掉。
其次,swift中没有分号。
最后......添加这个,你应该没事......
field.isHidden = true
为什么我评论第一行?因为在您返回true之前文本更改才会生效...