ui文本字段更新SKLabelNode
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ui文本字段更新SKLabelNode相关的知识,希望对你有一定的参考价值。
我正在编写一个代码,允许用户通过将文本分成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
}
}
}
}
}
答案
首先,我不得不评论你的线field.isHidden = true
。
其次,迅速没有分号。
最后......添加这个,你应该没事......
func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
//labelNode?.text = field?.text
labelNode?.text = (field?.text as NSString?)?.replacingCharacters(in: range, with: string)
return true
}
我为什么要评论第一行?因为文本更改在您返回true之前不会生效...
以上是关于ui文本字段更新SKLabelNode的主要内容,如果未能解决你的问题,请参考以下文章
活动到片段通信:当我尝试从活动更新片段中的文本视图时,出现空指针异常