ui文本字段更新SKLabelNode

时间:2018-03-05 17:29:39

标签: swift text sprite-kit field

我正在开发一个代码,允许用户通过将文本分成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
                }  
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

首先,我必须将你的行start()注释掉。

其次,swift中没有分号。

最后......添加这个,你应该没事......

field.isHidden = true

为什么我评论第一行?因为在您返回true之前文本更改才会生效...