2017-07-25 6 views
0

Ich versuche, eine UITextField zu einer SKScene hinzuzufügen. Ich arbeite mit Swift 3 und Xcode 8. Ich habe versucht, die folgenden:UITextField ist in SKScene nicht sichtbar.

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") 
    } 

} 

Aber alles, was ich bekommen, ist ein schwarzer Bildschirm. Was habe ich verpasst?

Danke für Ihre Hilfe!

Antwort

0

Sie müssen es in didMove hinzufügen (zur Ansicht: SKView)

von Code auf die folgende Funktion hinzugefügt haben, können Sie Ihr Textfeld sehen.

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) 
} 
+0

Hallo, danke, das hat funktioniert. Aber es scheint, dass das UITextField nicht zum SKScene "gehört". Wenn ich die Szene wie Lauf ändern (SKAction.sequence ([ SKAction.wait (forDuration: 5,0), SKAction.run() { lassen offenbaren = SKTransition.flipHorizontal (withDuration: 0,5) let Szene = OtherScene (Größe: Größe, Optionen: Optionen) self.view? .presentScene (Szene, Übergang: decken) } ])) das UITextField bleibt sichtbar. Ersetzen der Szene ändert nicht die Ansicht der UITextField ist? – Dinean

+0

Verstanden: stepsTextField.removeFromSuperview() Textfeld muss manuell aus der Ansicht entfernt werden. – Dinean

+0

das ist großartig @Dinean, das ist auch eine neue Sache für mich zu lernen! danke darüber. Wenn Ihnen die Antwort weiterhelfen würde, würde es Ihnen etwas ausmachen, sie zu verbessern? –