Клавиатура прячется при вращении - PullRequest
4 голосов
/ 22 июня 2011

Я работаю над приложением для iPad. В одном из его представлений у меня есть подпредставление, которое появляется и исчезает при нажатии кнопки. Подвид содержит UITextView. По умолчанию я делаю его первым респондентом, поэтому клавиатура появляется, как только появляется вид. Подвид также исчезает при запуске UIKeyboardWillHideNotification, то есть клавиатура скрыта.

Теперь проблема в том, что как только приложение поворачивается, система запускает UIKeyboardWillHideNotification, что, в свою очередь, приводит к исчезновению подпредставления. Я хочу, чтобы клавиатура оставалась на экране.

Что происходит и как я могу это исправить!?

Примечание. Представление и подпредставление имеют отдельные контроллеры представления. UIKeyboardWillHideNotification получено в классе контроллера представления подпредставления.

Ответы [ 2 ]

4 голосов
/ 22 июня 2011

Вы можете объявить переменную BOOL в методе shouldAutoRotate, который устанавливается при его вызове, а затем в методе селектора для отображения и скрытия подпредставления, вы можете использовать простое условие, если представление о погоде поворачивается или нет.

вот так:

if(viewRotated)
{
    subView.hidden = YES;
}
viewRotated = NO;

Редактировать часть:
Я не уверен, что происходит в этом коде, но он отлично работает в одном из моих приложений, кодирование ipad которого было сделано моим другом.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    if(UIInterfaceOrientationIsPortrait(interfaceOrientation))
    {
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(keyboardWillShow:) 
                                                     name:UIKeyboardWillShowNotification
                                                   object:nil];
        [[NSNotificationCenter defaultCenter] addObserver:self 
                                                 selector:@selector(keyboardWillHide:)
                                                     name:UIKeyboardWillShowNotification
                                                   object:nil];
    }
    else
    {

        [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                        name:UIKeyboardWillShowNotification 
                                                      object:nil];
        [[NSNotificationCenter defaultCenter] removeObserver:self 
                                                        name:UIKeyboardWillShowNotification 
                                                      object:nil];
    }
    return YES;
}

И вы можете снова добавить уведомление, если ваше UIKeyboardWillHideNotification не запущено, добавив эти уведомления снова в этом методе.

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
1 голос
/ 29 мая 2013

Вы можете использовать переменную BOOL для записи, вращается ли она. Тогда вы ничего не можете сделать, когда он вращается.

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