Клавиатура скрывает TabBar

Я работаю в приложении TabBar. В одном представлении есть UISearchBar, и при нажатии появляется клавиатура.

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

Вы знаете, как это решить?


person JAA    schedule 11.03.2011    source источник
comment
Когда пользователь концентрируется на вводе чего-либо для поиска в строке поиска, почему вы хотите, чтобы отображались вкладки?   -  person Viraj    schedule 11.03.2011
comment
Я бы также сказал, что это стандартное поведение, и вам не следует его менять.   -  person Rene Berlin    schedule 11.03.2011
comment
@Viraj мои обзоры хотят этого, я не виноват: P   -  person JAA    schedule 11.03.2011


Ответы (3)


Насколько мне известно, вы не можете перемещать клавиатуру .. поэтому попробуйте использовать преобразование, чтобы переместить панель вкладок над клавиатурой.

Взято из здесь

Еще одна ссылка

person visakh7    schedule 11.03.2011

Прошло некоторое время с тех пор, как это было задано, но для документации, вот оно: во-первых, подпишитесь на NSNotificationCenter, чтобы получать уведомление с клавиатуры:

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

не забудьте отказаться от подписки

- (void)viewWillDisappear:(BOOL)animated 
{
 [self.view endEditing:YES];
 [super viewWillDisappear:animated];
 [[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:UIKeyboardWillShowNotification object:nil];
 [[NSNotificationCenter defaultCenter] removeObserver:self
                                                name:UIKeyboardWillHideNotification  object:nil];
}

Затем реализуйте функцию, которая будет вызываться центром уведомлений:

- (void) keyboardWillToggle:(NSNotification *)aNotification
{
 CGRect frame = [[[self tabBarController] tabBar] frame];
 CGRect keyboard = [[aNotification.userInfo valueForKey:@"UIKeyboardFrameEndUserInfoKey"] CGRectValue];
 frame.origin.y = keyboard.origin.y - frame.size.height;
 [UIView animateWithDuration:[[aNotification.userInfo valueForKey:@"UIKeyboardAnimationDurationUserInfoKey"] floatValue] animations:^
 {
     [[[self tabBarController] tabBar] setFrame:frame];
 }];

Это будет анимировать TabBar в темпе клавиатуры и держать его наверху.

person Agustin    schedule 08.02.2013
comment
Я бы рекомендовал использовать UIKeyboardDidChangeFrameNotification, иначе у вас возникнут проблемы с разделенными клавиатурами stackoverflow.com/a/13495680/296446. - person Robert; 18.06.2013
comment
self.tabBarController? .view.frame.origin.y = 0.0. просто чтобы вернуться в нормальное состояние, когда клавиатура скрывается. - person Wilson Campusano; 08.02.2019

Я решил это, показав кастомную клавиатуру вместо родной uikeyboard.

Загрузите образец проекта по этой ссылке github.

настроить клавиатуру на желаемую родную клавиатуру, будь то числа или слова.

Затем поместите кнопки uibuttons под настраиваемую клавиатуру с контроллерами панели вкладок, как на изображении ниже. Попробуйте это (будущие посетители), это может решить проблему.

введите описание изображения здесь

person Nazik    schedule 18.06.2013