-1

2 つの UITextField があります。ユーザーがいずれかの内部にいることを次のように検出できます。

textFieldDidBeginEditing:(UITextField *)textField

これはうまくいきます。しかし、ユーザーがどちらの内部にもいないときに、テキストフィールドをアニメーション化する必要があります。現在、私は電話しています:(void)textFieldDidEndEditing:(UITextField *)textField

ただし、これは、テキストフィールドから別のフィールドに切り替えても呼び出されます。これを呼び出すより良い方法はありますか?

4

3 に答える 3

0

textFieldDidEndEditing デリゲート メソッドでは、消えるアニメーションを実行するだけでなく、dispatch_async でそれを実行し、現在 textField の編集がないかどうかを確認します。ユーザーが 1 つのテキスト フィールドの編集を終了した場合、編集テキスト フィールドはありません。ただし、ユーザーが別のテキストフィールドに切り替えた場合は、すでに編集が開始されており、isFirstResponder メソッドで簡単に確認できます。

于 2013-09-06T20:40:55.623 に答える
0

私がすることはBOOL、テキスト フィールドをアニメーション化する必要があるかどうかを検出するフラグを追加することです。次のように機能します。

-(void)hideTextFields {
    if (self.shouldHideTextFields) {
        self.textField1.hidden = YES; // Or whatever you want to do with 
        self.textField2.hidden = YES; // your text fields
    }
}
  • BOOL フラグをチェックし、テキスト フィールドを非表示にするかどうかを決定するメソッドを宣言します。

  • いずれかのメソッドが呼び出されるたびにtextFieldDidBeginEditing:(UITextField *)textField、BOOL フラグ ('shouldHideTextFields' と呼ぶことができます) を に設定しNOます。

  • いずれかのメソッドが呼び出されるたびにtextFieldDidEndEditing:(UITextField *)textField、BOOL フラグを「YES」に設定します。また、呼び出し[self performSelector:@selector(hideTextFields) withObject:nil afterDelay:1];て、ユーザーが他のテキスト フィールドを選択するための少しの時間を与えます。NOもしそうなら、上記のステップのおかげでフラグが設定されます。

お役に立てれば!

于 2013-09-06T19:32:58.750 に答える