【问题标题】:UITextField is not visible on SKSceneUITextField 在 SKScene 上不可见
【发布时间】:2017-07-25 13:35:32
【问题描述】:

我尝试将UITextField 添加到SKScene。我正在使用 Swift 3 和 Xcode 8。我尝试了以下方法:

import Foundation
import SpriteKit

class MyScene: SKScene {

    init(size: CGSize, score: Highscore, optionen: GameOptions) {
        super.init(size: size)

        let stepsTextField = UITextField(frame: CGRect(x: 20, y: 100, width: 300, height: 40))
        stepsTextField.placeholder = "Enter text here"
        stepsTextField.font = UIFont.systemFont(ofSize: 15)
        stepsTextField.borderStyle = UITextBorderStyle.roundedRect
        stepsTextField.autocorrectionType = UITextAutocorrectionType.no
        stepsTextField.keyboardType = UIKeyboardType.default
        stepsTextField.returnKeyType = UIReturnKeyType.done
        stepsTextField.clearButtonMode = UITextFieldViewMode.whileEditing;
        stepsTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.center
        self.view?.addSubview(stepsTextField)
    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

}

但我得到的只是黑屏。我错过了什么?

感谢您的帮助!

【问题讨论】:

    标签: swift uitextfield skscene addsubview


    【解决方案1】:

    你需要将它添加到didMove(查看:SKView)

    通过将您的代码添加到以下函数中,您可以看到您的文本字段。

        override func didMove(to view: SKView) {
        let stepsTextField = UITextField(frame: CGRect(x: 20, y: 100, width: 300, height: 40))
        stepsTextField.placeholder = "Enter text here"
        stepsTextField.font = UIFont.systemFont(ofSize: 15)
        stepsTextField.borderStyle = UITextBorderStyle.roundedRect
        stepsTextField.autocorrectionType = UITextAutocorrectionType.no
        stepsTextField.keyboardType = UIKeyboardType.default
        stepsTextField.returnKeyType = UIReturnKeyType.done
        stepsTextField.clearButtonMode = UITextFieldViewMode.whileEditing;
        stepsTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.center
        self.view?.addSubview(stepsTextField)
    }
    

    【讨论】:

    • 嗨,谢谢这个工作。但似乎 UITextField 不“属于” SKScene。当我像 run(SKAction.sequence([ SKAction.wait(forDuration: 5.0), SKAction.run() { let reveal = SKTransition.flipHorizo​​ntal(withDuration: 0.5) let scene = OtherScene(size: size, optionen) 一样更改场景时) optionen) self.view?.presentScene(scene, transition:reveal) } ])) UITextField 保持可见。替换场景不会改变 UITextField 所在的视图?
    • 知道了:stepTextField.removeFromSuperview() 必须从视图中手动删除文本字段。
    • 太棒了@Dinean,这也是我要学习的新东西!谢谢。如果答案对您有帮助,您介意点赞吗?
    猜你喜欢
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 2018-02-04
    • 2011-04-30
    相关资源
    最近更新 更多