【问题标题】:Adding UITextField input to NSMutableArray [duplicate]将 UITextField 输入添加到 NSMutableArray [重复]
【发布时间】:2013-02-20 07:48:06
【问题描述】:

我正在尝试使用以下IBActionsUITextField 输入添加到NSMutableArray,连接到UITextFields 的“已结束编辑”部分:

- (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 部分初始化了玩家数组,如下所示:

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

但数组仍然是'nil'。有谁知道如何解决这个问题?

【问题讨论】:

  • 你已经初始化播放器了吗?
  • @Ares 我相信我有。
  • @Josh Caswell 我看过所有这些,但没有一个能解决我的问题。
  • 请编辑您的问题,以包含您尝试解决问题的内容。
  • @JoshCaswell 当然你可以帮助我解决上述代码的问题,无论我试图到达那里。

标签: ios objective-c nsmutablearray


【解决方案1】:

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

UITextField 在辞去第一响应者时发送“已结束编辑”。您可以通过设置文本字段的委托并实现textFieldShouldReturn:,使其在用户点击返回时退出第一响应者。首先在ViewController.m 的顶部找到类扩展。编辑它(如果它不存在则添加它)以声明该类符合UITextFieldDelegate

@interface ViewController () <UITextFieldDelegate>

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

@end

接下来,在类中实现textFieldShouldReturn:,让文本域resign first responder:

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

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

【讨论】:

  • 非常感谢您的帮助,包括所有这些内容,但似乎仍然无法正常运行
【解决方案2】:

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

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

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

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

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

我在一个示例项目中尝试了同样的方法,效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    • 2012-09-26
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多