42

テキストフィールドでキーボードが非表示になったり表示されたりするときにビューが上に移動するようにアニメーションを設定しようとしていますが、完全に正常に動作するようになりましたが、フォーカスがあるテキストフィールドから別のテキストフィールドに移動すると機能しませんキーボードはすでに表示されているためです。

viewDidLoad では、以下を登録しました。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];

次に、keyboardWillShow および keyboardWillHide メソッドで、ビューを移動するかどうかを決定し、それに応じてアニメーション化します。しかし、キーボードが既に表示されていて、ビューを上に移動する必要がある別のテキスト フィールドをユーザーがクリックした場合、メソッドは呼び出されません。キーボードが既に表示されているときにフォーカスが別のテキスト フィールドに変更されたかどうかを検出する方法はありますか? すべてのテキスト フィールドをデリゲートに設定せずにこれを行う方法があれば、それは素晴らしいことです。

前もって感謝します。

4

4 に答える 4

85

デリゲートメソッドを使用しUITextFieldてください..キーボードメソッドよりもケースに適しています.. textField がフォーカスを取得すると..フォーカス が- (void)textFieldDidBeginEditing:(UITextField *)textField;失われたときに起動されます..- (void)textFieldDidEndEditing:(UITextField *)textField;

于 2012-05-20T07:51:45.973 に答える
10
-(BOOL)textFieldShouldBeginEditing:(UITextField*)textField {
if (textField.tag == 1) { //first textField tag
    //textField 1
}
else {
   //textField 2
}
}
于 2012-05-20T08:19:13.387 に答える
7

UITextFieldDelegate を使用する

func textFieldDidBeginEditing(textField: UITextField) {
        println("did")
        if textField.tag == 1{
            self.txtFullName.layer.borderColor = UIColor.blueColor().CGColor
        }
    }
于 2015-09-23T05:19:07.460 に答える