キーボードが隠れてテキストフィールドに表示されているときにビューを動かすアニメーションを設定しようとしていますが、これは問題なく動作しますが、フォーカスが1つのテキストフィールドキーボードがすでに表示されているので、別のキーボードには、機能しません。 viewDidLoadでUITextFieldのフォーカス変更を検出する
、私は、次の登録:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
とビューが移動したりしないし、それに応じてアニメートすべきであるならば、keyboardWillShowとkeyboardWillHide方法で、それが決定します。しかし、キーボードがすでに表示されていて、ユーザーが上に移動するためにビューを必要とする別のテキストフィールドをクリックした場合、メソッドは呼び出されません。キーボードが既に表示されているときにフォーカスが別のテキストフィールドに変更されたかどうかを検出する方法はありますか?すべてのテキストフィールドを代理人に設定しなくても、これを行う方法があれば素晴らしいでしょう。
ありがとうございます。
感謝。これを行うと、userInfoを取得する方法はありますか?これらのメソッドでは、UIKeyboardAnimationDurationUserInfoKeyとUIKeyboardFrameEndUserInfoKeyをuserInfoから取得してアニメーションを設定しているため、パラメータとして渡された通知がないときにどうやって同じことができるのか分かりません。 – Dennis
あなたは必要な情報の種類は何ですか? –
UIKeyboardAnimationDurationUserInfoKey、キーボードアニメーションの継続時間(ビュー移動のアニメーションが一致する可能性があるため)、UIKeyboardFrameEndUserInfoKeyはキーボードの高さを取得します。私は値をハードコードしたくなかった。 – Dennis