3

私のビューには 2UITextFieldsつとUISwitch. ユーザーが を編集しtextField、すぐに (リターンを押さずに) スイッチに触れると、テキストは入力したままになり、 は表示されませんAutoCorrect

入力内容がわかっている場合textFieldは、 を呼び出してオートコレクトを強制的に完了させることができます[textField resignFirstResponder]。しかし、ユーザーはどちらかを入力している可能性があるtextFieldため、どちらを呼び出すべきかわかりません。

どうすればこれを回避できますか? どちらが使用されていたかを検出する方法はありtextFieldますか? それとも、私が考えていなかったより単純なものですか?

4

4 に答える 4

9

どのフィールドがアクティブかを追跡せずにこれを行う素敵な方法の 1 つ:

// This causes the current responder (eg. an input field) to resignFirstResponder and
[self.endEditing:YES];
于 2011-05-04T14:42:58.300 に答える
6

以下のものと交換[self.view endEditing:YES] してください...

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) to:nil from:nil forEvent:nil];
于 2014-07-08T09:26:35.370 に答える
2

uitextfielddelegateメソッドは、編集が進行中のテキスト フィールドに対して呼び出されます。そうすれば、どのテキスト フィールドが編集されているかを検出するという問題に直面する必要がなくなります。

したがって、uitextfielddelegateメソッドを実装し、メソッドを実装して応答を処理するクラスにテキスト フィールドのデリゲートを割り当てます。

興味のあるメソッドは次のとおりです。

textFieldDidEndEditing:

指定されたテキスト フィールドの編集が停止したことをデリゲートに伝えます。

- (void)textFieldDidEndEditing:(UITextField *)textField

パラメーター

textField
編集が終了したテキスト フィールド。

討論

このメソッドは、テキスト フィールドがファーストレスポンダ ステータスを辞任した後に呼び出されます。このメソッドを使用して、デリゲートの状態情報を更新できます。たとえば、このメソッドを使用して、編集中にのみ表示するオーバーレイ ビューを非表示にすることができます。デリゲートによるこのメソッドの実装はオプションです。

可用性

iOS 2.0 以降で利用できます。

で宣言

UITextField.h

于 2011-05-04T13:35:36.257 に答える
0

textFieldDidBeginEditing デリゲートを使用して、どれが現在のものであるかを自分で追跡できます。

于 2011-05-04T13:48:49.013 に答える