【问题标题】:TextField does not work文本字段不起作用
【发布时间】:2015-08-24 16:57:40
【问题描述】:

我有一个文本字段来输入单词,当(自动)并按下按钮(检查按钮)时,它应该打印出来(正确)。问题是它不起作用。

当我在办公室时 touchesBegan:if (TextField.text == "auto") 列出了一个错误:

使用未解析的标识符“TextField”。

当一切正常并写信给我(正确)。

我尝试完成函数 touchesBegan 移动以覆盖 func didMoveToView(视图:SKView)并且 TextField.text 已解决,但它不起作用。

我在 SpriteKit 工作

我在哪里犯错? 谢谢

这是我的代码:

class level1: SKScene{
    let logo = SKSpriteNode(imageNamed: "Q1")
    let check = SKSpriteNode(imageNamed: "check")
    let number = SKSpriteNode(imageNamed: "N1")

    override func didMoveToView(view: SKView) {
        scene!.scaleMode = .AspectFill
        scene!.scaleMode = SKSceneScaleMode.ResizeFill

        var background = SKSpriteNode(imageNamed: "Background")
        background.size = CGSizeMake(self.size.width, self.size.height)
        background.position = CGPointMake(self.size.width/2, self.size.height/2)
        self.addChild(background)

        let screenSize: CGRect = UIScreen.mainScreen().bounds
        let screenWidth = screenSize.width;
        let screenHeight = screenSize.height;

        var TextField = UITextField(frame : CGRect(x:10, y:(screenHeight/2.25), width:(screenWidth - 20), height:(screenHeight/15) ))
        self.view!.addSubview(TextField)
        TextField.backgroundColor = UIColor.whiteColor()
        TextField.textAlignment = .Center
        TextField.font = UIFont(name: "Helvetica Neue", size: 23)

        number.position = CGPoint(x: size.width * 0.5, y: size.height * 0.95)
        addChild(number)

        logo.position = CGPoint(x: size.width * 0.5, y: size.height * 0.72)
        addChild(logo)

        check.position = CGPointMake(size.width/2,size.height/2 - 43)
        check.name = "checkbutton"
        addChild(check)
    }

    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        let touch = touches.first as! UITouch
        let touchLocation = touch.locationInNode(self)
        let touchedNode = self.nodeAtPoint(touchLocation)

        if(touchedNode.name == "checkbutton"){
            if(TextField.text == "auto"){
                println("CORRECT")
            }
        } else {
        }
    }
}

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

    您的 var TextField 是方法 didMoveToView 的本地变量,因此无法从 touchesBegan 内部访问。将此 var 从 didMoveToView 移到类级别。

    此外,按照惯例,var 应该以小写字母开头:textField 而不是 TextField。

    【讨论】:

      猜你喜欢
      • 2018-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多