How to create a UITextField in SpriteKit

I want to implement a text box to enter your name in my SpriteKit game, so I have something like this:

SKLabelNode* gameTitle = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; gameTitle.text = @"Game Title"; gameTitle.name = @"gametitle"; gameTitle.fontSize = 44.0; gameTitle.fontColor = [SKColor blackColor]; gameTitle.position = CGPointMake(self.size.width/2,self.size.height/2 + 150); [self addChild:gameTitle]; UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(self.size.width/2, self.size.height/2+20, 200, 40)]; textField.borderStyle = UITextBorderStyleRoundedRect; textField.textColor = [UIColor blackColor]; textField.font = [UIFont systemFontOfSize:17.0]; textField.placeholder = @"Enter your name here"; textField.backgroundColor = [SKColor whiteColor]; textField.autocorrectionType = UITextAutocorrectionTypeYes; textField.keyboardType = UIKeyboardTypeDefault; textField.clearButtonMode = UITextFieldViewModeWhileEditing; textField.delegate = self.delegate; [self.view addSubview:textField]; 

so the problem is that it does not appear on my scene, maybe the problem is to add it to the scene, I use addSubview.

It is not right?

+6
source share
2 answers

You can add objects that inherit from UIView inside the didMoveToView:(SKView *)view function didMoveToView:(SKView *)view

Just add this function to your SKScene and move your UITextField inside:

 -(void)didMoveToView:(SKView *)view { UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(self.size.width/2, self.size.height/2+20, 200, 40)]; textField.center = self.view.center; textField.borderStyle = UITextBorderStyleRoundedRect; textField.textColor = [UIColor blackColor]; textField.font = [UIFont systemFontOfSize:17.0]; textField.placeholder = @"Enter your name here"; textField.backgroundColor = [UIColor whiteColor]; textField.autocorrectionType = UITextAutocorrectionTypeYes; textField.keyboardType = UIKeyboardTypeDefault; textField.clearButtonMode = UITextFieldViewModeWhileEditing; textField.delegate = self.delegate; [self.view addSubview:textField]; } 
+15
source

to remove it use

 [myTextField removeFromSuperView]; 

if you do not want to use the didMoveToView method, which inserts a text screen into the scene presentation, you can use this method:

 -(void)insertUI{ ttaAppDelegate *myDel = [[UIApplication sharedApplication] delegate]; UIViewController *vc = myDel.window.rootViewController; self.textField= [[UITextField alloc] initWithFrame:CGRectMake(self.size.width/2, self.size.height/2+20, 200, 40)]; self.textField.center = self.view.center; self.textField.borderStyle = UITextBorderStyleRoundedRect; self.textField.textColor = [UIColor blackColor]; self.textField.font = [UIFont systemFontOfSize:17.0]; self.textField.placeholder = @"Enter your name here"; self.textField.backgroundColor = [UIColor whiteColor]; self.textField.autocorrectionType = UITextAutocorrectionTypeYes; self.textField.keyboardType = UIKeyboardTypeDefault; self.textField.clearButtonMode = UITextFieldViewModeWhileEditing; self.textField.delegate = self; self.button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [self.button addTarget:self action:@selector(saveScore:) forControlEvents:UIControlEventTouchDown]; [self.button setTitle:@"Save" forState:UIControlStateNormal]; self.button.frame = CGRectMake(80.0, 210.0, 160.0, 40.0); [vc.view addSubview:self.textField]; [vc.view addSubview:self.button]; vc.interstitialPresentationPolicy = ADInterstitialPresentationPolicyManual; [vc requestInterstitialAdPresentation]; } 
+1
source

Source: https://habr.com/ru/post/956940/


All Articles