2017-02-15 9 views
1

私のアプリでは、登録画面でUITextFieldとフッタのSubmitボタンを含むtableViewがあります。私は最後のTextFieldに値を入力し、送信ボタンを押す(キーボードを辞めることなく)以外はすべて正常に動作します。テキスト編集が終了したときにのみ値が入力されるため、私の関数は値を表示しません。私はデリゲートを使って価値を得ています。iOS UITextField resignFirstResponder issue

私のコードは次のとおりです。customcell.mで
私のViewControllerで

- (void)textFieldDidEndEditing:(UITextField *)textField { 
    if ([textField.text length] >0) { 
    [self.cellImageview setImage:editImage]; 
    } 
    else{ 
    [self.cellImageview setImage:defaultImage]; 
    } 
    [_delegate signUpTableCell:self didUpdateValue:textField.text inTextField:textField]; 
} 

-(void)signUpTableCell:(SignUpTableCell *)cell didUpdateValue:(NSString *)value inTextField:(UITextField *)textField { 
    NSLog(@"cell:%@ value: %@ textfield value:%@ ", cell, value, textField.text); 
    [registerDictionary setValue:value forKey:textField.placeholder]; 
    NSLog(@"registerDictionary:%@", registerDictionary); 
} 

問題:私がクリックしたときに

最後のTextField値はnilであります送信ボタンで、おそらく テキストフィールドの編集が終了しない限り、 は呼び出されません。空の場所をクリックしてキーボードを辞めるとうまくいきます。この問題を回避する方法はありますか?

答えて

1

ボタンをクリックして手動でresignFirstResponder()を呼び出そうとしましたか?

+0

はい、私は動作しませんでした。それは最初のレスポンダーを辞めるが、値を得ることができない –

+0

あなたのキーボードは実際に離れて、 'textFieldDidEndEditing()'メソッドが呼び出されていますが、 'didUpdateValue()'は呼び出されません。 'resignFirstResponder()'を手動で呼び出すことでそれらのメソッドのどれかが呼び出されているかどうか確認できますか? –

1

でボタン提出するコードの下に追加します。

[self.view endEditing:yes]; 

または私のコードにいくつかの変更を加えることによってそれを修正

[self.yourTableview.scrollView endEditing:yes]; 
+0

すでにこれを行いましたが、まだregisterDictionary配列に値を取得できませんでした –

0

を使用します。私はregisterDictionaryから値を得た後、[self.view endEditing:yes];を使っていました。私の愚か。

関連する問題