Я работаю в приложении TabBar. В одном представлении есть UISearchBar, и при нажатии появляется клавиатура.
Проблема в том, что клавиатура скрывает панель вкладок.
Вы знаете, как это решить?
Я работаю в приложении TabBar. В одном представлении есть UISearchBar, и при нажатии появляется клавиатура.
Проблема в том, что клавиатура скрывает панель вкладок.
Вы знаете, как это решить?
Прошло некоторое время с тех пор, как это было задано, но для документации, вот оно: во-первых, подпишитесь на 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 в темпе клавиатуры и держать его наверху.
UIKeyboardDidChangeFrameNotification
, иначе у вас возникнут проблемы с разделенными клавиатурами stackoverflow.com/a/13495680/296446.
- person Robert; 18.06.2013
Я решил это, показав кастомную клавиатуру вместо родной uikeyboard
.
Загрузите образец проекта по этой ссылке github.
настроить клавиатуру на желаемую родную клавиатуру, будь то числа или слова.
Затем поместите кнопки uibuttons под настраиваемую клавиатуру с контроллерами панели вкладок, как на изображении ниже. Попробуйте это (будущие посетители), это может решить проблему.