UITextField 在 SKScene 上不可见

Posted

技术标签:

【中文标题】UITextField 在 SKScene 上不可见【英文标题】:UITextField is not visible on 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")
    


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

感谢您的帮助!

【问题讨论】:

【参考方案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,这也是我要学习的新东西!谢谢。如果答案对您有帮助,您介意点赞吗?

以上是关于UITextField 在 SKScene 上不可见的主要内容,如果未能解决你的问题,请参考以下文章

UITextField 和 UIButton 不可点击

设置 UITextField 不可编辑或不可编辑

在 SKScene 上运行 SKTransition 是不是会破坏源 SKScene?

使“UITextField”的某些部分不可选择

在 UITextField 上启用复制和粘贴而不使其可编辑

IOS 怎么设置UIButton UITextField 不可点击且变灰