0

サブビューにUIテキストフィールドがあります。ビューに追加しています。キーボードがポップアップすると、このサブビューを追加するビューをアニメーション化したいと思います。サブビュークラスにすべてのテキストフィールドデリゲート関数を記述しましたのみ。したがって、Animateテキストフィールド機能を使用すると、親ビューは移動せず、代わりにサブビューがアニメーション化されます....助けてください

4

2 に答える 2

15

Try this:

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

in the viewDidLoad

and then this

- (void)keyboardWillHide:(NSNotification *)aNotification
{
    // the keyboard is hiding reset the table's height
    NSTimeInterval animationDuration =
    [[[aNotification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    CGRect frame = self.view.frame;
    frame.origin.y += 160;
    [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
    [UIView setAnimationDuration:animationDuration];
    self.view.frame = frame;
    [UIView commitAnimations];
}

- (void)keyboardWillShow:(NSNotification *)aNotification
{
    // the keyboard is showing so resize the table's height
    NSTimeInterval animationDuration =
    [[[aNotification userInfo] objectForKey:UIKeyboardAnimationDurationUserInfoKey] doubleValue];
    CGRect frame = self.view.frame;
    frame.origin.y -= 160;
    [UIView beginAnimations:@"ResizeForKeyboard" context:nil];
    [UIView setAnimationDuration:animationDuration];
    self.view.frame = frame;
    [UIView commitAnimations];
}

in your view controller

Most likely you will have to change the value (160) that I put here based on your specific view

于 2013-09-03T10:29:55.063 に答える
1

textFieldDidBeginEditingを試したことがありますか? これを試したかどうか、それが適切な方法かどうかはわかりません。私はこれを使用しましたが、達成するために少ない行が機能しています

-(void)textFieldDidBeginEditing:(UITextField *)textField
{

    self.view.frame=CGRectMake(0, -300, 320, 700);

}

これにより、ルートビューが一番上に移動するため、サブビューが自動的に一番上に移動しますテキストフィールドはキーボードの後ろに隠れません。申し訳ありませんが、コメントする評判がありません

于 2013-09-03T10:56:28.777 に答える