leicht gemacht: UITextField mit cocos2d

Hallo Zusammen,

neben den vielen Stärken von cocos2d, gibt es natürlich auch Nachteile wenn ein solches Framework eingesetzt wird. So gibt es zum Beispiel kein cocos2d Pendant für ein UITextField. Dies macht es notwendig ein UITextfield direkt einzusetzen.

Ich zeige wie es geht.

Zu aller erst müssen wir im Interface definieren, dass die Klasse konform zum <UITextFieldDelegate> Protokoll sein soll. Bei der Gelegenheit führen wir gleich eine Instanzvariable vom Typ UITextField ein.

@interface myClass: CCLayer<UITextFieldDelegate>
{
    UITextField 	*_searchTextField;
}
// returns a CCScene that contains the self-Layer as the only child
+(CCScene *) scene;
@end

Anschließend definieren wir eine Methode um das Textfeld zu erstellen.

-(void)setupTextField{

    CGSize winSize = [[CCDirector sharedDirector] winSize];
    _searchTextField = [[UITextField alloc] initWithFrame: CGRectMake(60, 165, 300, 30)];
    _searchTextField.center = CGPointMake(winSize.width/2, winSize.height*0.4);
    _searchTextField.text = @"";
    _searchTextField.borderStyle = UITextBorderStyleRoundedRect;
    _searchTextField.backgroundColor = [UIColor colorWithRed:100 green:100 blue:100 alpha:1.0];
    _searchTextField.clearButtonMode = UITextFieldViewModeWhileEditing;
    _searchTextField.textColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:1.0]];
    _searchTextField.delegate = self;

    [[[CCDirector sharedDirector] view] addSubview:_searchTextField];
    [_searchTextField becomeFirstResponder];
}

Mit delegate self legen wir fest, dass Methoden in dieser Klasse dafür zuständig sind die späteren Texteingabe zu behandeln. Diese Methoden fehlen noch, was uns auch als Warnung angezeigt wird. Also fügen wir sie hinzu, um auch wirklich mit  <UITextFieldDelegate> Protokoll konform zu sein.

-(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [_searchTextField resignFirstResponder];
    return YES;
}

-(void)textFieldDidEndEditing: (UITextField *)textField {
    if(textField == _searchTextField) {
        [_searchTextField endEditing:YES];
        NSString *input  = _searchTextField.text;
        // mach etwas tolles mit dem Inhalt 
        NSLog(@"der eingegebene Text ist %@",input);

    } 
}

Führen wir die App nun aus sehen wir ein schöne TextLabel. Es erscheint sofort die Tastatur und wir können eine Eingabe machen. Diese wird bei Abschluss der Eingabe als NSLog ausgegeben.

UITextField mit cocos2d

Wenn man nun das Textfeld wieder los werden möchte geht dies ganz einfach mit

    [_searchTextField removeFromSuperview];

Bis zum nächsten mal.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.