0

我正在尝试使用以下连接到“已结束编辑”部分将UITextField输入添加到:NSMutableArrayIBActionsUITextFields

- (IBAction) returnKey1
{
    [textInputOne addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
    [textInputOne resignFirstResponder];
    [players addObject:textInputOne.text];
}

- (IBAction) returnKey2
{
    [textInputTwo addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
    [textInputTwo resignFirstResponder];
    [players addObject:textInputTwo.text];
NSLog(@"array: %@",players);
}

我已经在viewDidLoad部分中初始化了 player 数组,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];
    players = [[NSMutableArray alloc] init];
}

但数组仍然是“零”。有人知道怎么修这个东西吗?

4

2 回答 2

2

UITextField当用户点击 Return 时不发送任何操作。因此,当用户点击 Return 时,您不会收到“did end editing”操作。

UITextField当它辞去第一响应者时发送“结束编辑”。当用户点击 Return 时,您可以通过设置文本字段的委托和实现来使其辞职第一响应者textFieldShouldReturn:。首先在ViewController.m. 编辑它(如果它不存在则添加它)以声明该类符合UITextFieldDelegate

@interface ViewController () <UITextFieldDelegate>

@property (nonatomic, strong) IBOutlet UITextField *textFieldOne;
@property (nonatomic, strong) IBOutlet UITextField *textFieldTwo;

@end

接下来,textFieldShouldReturn:在类中实现使文本字段退出第一响应者:

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

最后,在您的 xib 中,将每个文本字段的delegate出口连接到视图控制器(通常是文件的所有者)。

于 2013-03-05T19:24:00.447 回答
2

我希望您已正确地将代表设置为文本字段。当您在 viewDidLoad 中分配了 player 数组时,请尝试使用以下代码

- (IBAction) returnKey1
{
    [players addObject:textInputOne.text];
}

- (IBAction) returnKey2
{
    [players addObject:textInputTwo.text];
}

分配给文本字段的 returnKey1 和 returnKey2 IBActions 都结束了编辑事件。现在辞职键盘

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

我在一个示例项目中尝试了同样的事情,它运行良好。

于 2013-03-06T05:18:52.797 回答