0

UITableView 内にいくつかの UITextFields が埋め込まれており、UIViewController クラスも UITextFieldDelegate として設定されています。ViewController クラスの UITextFields への直接参照はなく、特定の NSIndexPath で特定の UITableView のセルにアクセスすることによってのみアクセスできます。

ユーザーがタップすることで UIButton のアクション ターゲットが呼び出されるたびに、' -(void)textFieldDidEndEditing:(UITextField *)textField. 最後のアクティブなフィールドはまだ呼び出されていません。最後のアクティブなフィールドのテキストをキャプチャするにはどうすればよいですか?

フラグを設定して、編集の開始と終了、および他のいくつかの解決策を記録しようとしましたが、これらのどれも正しくないようです..

onButtonTap アクション ハンドラー内で、これがあれば:

[self.view endEditing:YES]; 
// would the call to 'textFieldDidEndEditing' happen synchronously and then return
// to this line or would they be async?
[self doActionLogic]; //

誰かがこれを行うための良いテクニックを提案できますか? それは標準的な問題のようですが、答えを見つけるのが少し遅いです。

4

1 に答える 1

0

テキストフィールドの入力のみが必要な場合は、メソッドでテストを ivar に設定し、yes を返すことができます。

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField

ボタンアクションの後に textFieldDidEndEditing を呼び出すことができますが、すでに ivar にあるので問題はありません。しかし、最善の方法は、テキストフィールドの入力を確認してボタンを有効にすることです

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

uitexfield.shouldChangeCharactersInRange内に有効な入力があるときはいつでもボタンを外すことを有効にしてください。何かを入力すると、入力がuitextfieldに挿入される前に呼び出されます。

于 2012-08-10T06:56:27.830 に答える