Переместить UIView при появлении клавиатуры - PullRequest
1 голос
/ 10 марта 2012

Я сожалею о своем английском языке.

Я пытался найти, прежде чем он действует. Но проблема в том, что ViewController в ландшафте и создали UIView половину ViewController. В UIView есть UITextView. Но теперь, когда на клавиатуре появляется фон в ViewController, прокрутите вниз под клавиатурой. И вижу только UIView. Если коснуться пробела, клавиатура исчезнет и фон вернется. Я хочу просто переместить UIView при появлении клавиатуры.

Большое спасибо.

Ответы [ 2 ]

10 голосов
/ 10 марта 2012

попробуйте

- (void)viewDidAppear:(BOOL)animated
{
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}

- (void)keyboardWillShow:(NSNotification *)note
{
    CGRect keyboardBounds;
    NSValue *aValue = [note.userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey];

    [aValue getValue:&keyboardBounds];
    keyboardHeight = keyboardBounds.size.height;
    if (!keyboardIsShowing)
    {
        keyboardIsShowing = YES;
        CGRect frame = view.frame;
        frame.size.height -= 168;

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationBeginsFromCurrentState:YES];
        [UIView setAnimationDuration:0.3f];
        view.frame = frame;
        [UIView commitAnimations];
    }
}

- (void)keyboardWillHide:(NSNotification *)note
{
    CGRect keyboardBounds;
    NSValue *aValue = [note.userInfo valueForKey:UIKeyboardFrameEndUserInfoKey];
    [aValue getValue: &keyboardBounds];

    keyboardHeight = keyboardBounds.size.height;
    if (keyboardIsShowing)
    {
        keyboardIsShowing = NO;
        CGRect frame = view.frame;
        frame.size.height += 168;

        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationBeginsFromCurrentState:YES];
        [UIView setAnimationDuration:0.3f];
        view.frame = frame;
        [UIView commitAnimations];

    }
}
1 голос
/ 10 марта 2012

Этот ответ выглядит так, как если бы вы искали.

Короче говоря:

  1. Определите, когда появляется клавиатура с UIKeyboardDidShowNotification .

  2. Информация о пользователе для этого уведомления описывает кадр клавиатуры.

  3. Отрегулируйте кадры вашего вида, чтобы вытащить их из-под клавиатуры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...