1

キーボードが非表示になったときにビューを下にスクロールしたいのですが、ビューがフレームの外側から初めて表示されます(最初に添付した画像)が、2回目にキーボードを非表示にすると、ビューが正しくスクロールダウンします。方法(2番目の図)。

この部分に関連するコードは次のとおりです。

    - (void)viewDidUnload
    {
     [[NSNotificationCenter defaultCenter] removeObserver:self
                                                        name:UIKeyboardWillShowNotification
                                                      object:nil];
        [[NSNotificationCenter defaultCenter] removeObserver:self
                                                        name:UIKeyboardWillHideNotification
                                                      object:nil];

    }

    - (void)viewWillAppear:(BOOL)animated
    {
        [super viewWillAppear:animated];
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(keyboardDidShow:)
                                                     name:UIKeyboardDidShowNotification
                                                   object:self.view.window];
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(keyboardDidHide:)
                                                     name:UIKeyboardDidHideNotification
                                                   object:nil];
    }

    - (void)keyboardDidShow:(NSNotification *)notification
    {
        [_scrollView setScrollEnabled:TRUE];
    }

- (void)keyboardDidHide:(NSNotification *)notification
{
    [UIView animateWithDuration:4 animations:^{

      NSDictionary* info = [notification userInfo];
     //---obtain the size of the keyboard---
     NSValue* aValue = [info objectForKey:UIKeyboardFrameEndUserInfoKey];
     CGRect keyboardRect = [self.view convertRect:[aValue CGRectValue] fromView:nil];
     //---resize the scroll view back to the original size (without keyboard)---
     CGRect viewFrame = [self.view frame];
     viewFrame.size.height += keyboardRect.size.height;
     self.scrollView.frame = viewFrame;
     }];


}

ここに画像の説明を入力してください ここに画像の説明を入力してください

4

0 に答える 0