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そして、セクションのプレーヤー配列を次のように初期化しました。

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

しかし、配列は「nil」のままです。誰でもこれを修正する方法を知っていますか?

4

2 に答える 2

2

UITextFieldユーザーが [戻る] をタップしてもアクションは送信されません。そのため、ユーザーが [戻る] をタップしたときに、「編集を終了しました」アクションを受け取ることはありません。

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に割り当てたので、次のコードを試してください

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

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

textfield に割り当てられた returnKey1 と returnKey2 IBActions の両方が編集イベントを終了しました。今すぐキーボードを辞任する

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

1 つのサンプル プロジェクトで同じことを試してみましたが、うまくいきました。

于 2013-03-06T05:18:52.797 に答える