0

有很多类似的问题和答案,但它们并没有解决主要问题:如何在 cocos2d 中正确添加任何文本字段及其可工作的委托。

例如,如果我创建 UITextfield 并将其简单地添加到 [[CCDirector sharedDirector] view] 那么它将仅调用 textFieldShouldReturn: 方法。没有更多的方法不起作用,即使是 textViewDidBeginEditing:

我使用单独的视图和 UITextField 给出了相同的结果。我还尝试创建一个单独的 UIViewController 以将其视图与 UITextField 一起使用,但它甚至使我的应用程序崩溃

4

2 回答 2

1

1:确保您CCNode包含UITextFieldDelegate

@interface MyLayer : CCLayer <UITextFieldDelegate>

2:像往常一样初始化 UITextField:

UITextField *nameField = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, fieldWidth, fieldHeight)];
            nameField.textAlignment = NSTextAlignmentCenter;
            nameField.font = [UIFont fontWithName:kFontName size:24];
            nameField.text = @"Enter Name";
            nameField.delegate = self;
            nameField.backgroundColor = [UIColor grayColor];
            nameField.textColor = [UIColor whiteColor];
            nameField.autocorrectionType = UITextAutocorrectionTypeNo;

3:将字段添加到CCDirector视图中:

[[[CCDirector sharedDirector] view] addSubview:nameField];

4:UITextField在您的CCNode

- (BOOL)textFieldShouldReturn:(UITextField*)textField
- (void)textFieldDidBeginEditing:(UITextField *)textField
于 2013-06-18T13:50:14.637 回答
0

我的错误是 UITextFieldDelegate 和 UITextViewDelegate 有一些相似的方法,我使用了第二个委托的一些方法。例子:

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView;
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;

当然我最后写了 (UITextView *)textField 。

于 2013-06-19T07:04:27.610 回答