Пользовательская клавиатура: inputView: как изменить размер клавиатуры?

Я реализовал текстовое поле с помощью специальной клавиатуры с функцией "setInputView". Но у меня есть проблема: мой фрейм клавиатуры не является стандартным фреймворком iphone.

Вопрос: Как я могу изменить размер моей пользовательской клавиатуры? Я знаю некоторые функции, такие как: UIKeyboardFrameBeginUserInfoKey,..etc.

Обратите внимание: Каркас для клавиатуры iPhone = 0,264,320,216 Моя пользовательская рамка клавиатуры = 0,0,320,460

Надеясь на ваше сотрудничество, С наилучшими пожеланиями... Р

Ответ 1

Оказывается, что поведение по умолчанию для представления пользовательского ввода, которое вы назначаете свойству UITextField, должно изменить размер представления на тот же фрейм, что и клавиатура по умолчанию. Попробуйте установить (я использую имя InputViewController для моего ввода, но вы можете использовать все, что хотите):

inputViewController = [[InputViewController alloc] initWithNibName:@"InputViewController" bundle:nil];
inputViewController.delegate = self;
inputViewController.view.autoresizingMask = UIViewAutoresizingNone; // This is the code that will make sure the view does not get resized to the keyboards frame.

Для получения более подробной информации вы можете посмотреть эту ссылку, которая предоставляется Apple.:

Если UIKit встречает входное представление с значением UIViewAutoresizingFlexibleHeight в своей маске авторезистировки, оно изменяет высоту в соответствии с клавиатурой.

Надеюсь, что это поможет!

Ответ 2

Чтобы установить клавиатуру inputView с тем же размером, что и родная клавиатура, выполните следующее:

inputView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

Чтобы настроить свой собственный кадр, выполните следующие действия:

inputView.autoresizingMask = UIViewAutoresizingNone;

Из Apple:

У вас есть большая гибкость в определении размера и содержимого вида ввода или ввода аксессуаров. Хотя высота этих представлений может быть тем, что вам нравится, они должны быть той же ширины, что и системная клавиатура. Если UIKit встречает входное представление с значением UIViewAutoresizingFlexibleHeight в маске авторезистировки, он изменяет высоту в соответствии с клавиатурой. Нет ограничений на количество подзапросов (таких как элементы управления), которые могут иметь виды ввода и виды вспомогательного оборудования. Более подробные сведения о представлениях входных данных и типах входных аксессуаров см. В Руководстве пользователя по интерфейсу iOS.

Ответ 3

У меня была та же проблема. Я решил это, зарегистрировавшись для UIKeyboardDidShowNotification (к сожалению, UIKeyboardWillShowNotification не работает, а затем изменил размер представления после того, как была показана клавиатура. Тем не менее, он все еще имел белый ящик на клавиатуре, когда он двигался вверх. Это работало отлично для меня, потому что оно выходит через UITextView с белым фоном. Однако, если вы проходили через какие-либо другие цветные объекты, это выглядело бы немного уродливым до того, как вид был бы соответствующим образом изменен. Вы можете решить это, установив цвет фона на clearColor.

// Add this while initializing your view
self.backgroundColor = [UIColor clearColor]; // Needed because we can't resize BEFORE showing the view.  Otherwise you will see an ugly white box moving up w/ the keyboard
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWasShown:)
                                             name:UIKeyboardDidShowNotification object:nil];



// Called when the UIKeyboardDidShowNotification is sent.
- (void)keyboardWasShown:(NSNotification*)aNotification
{

    CGRect rect = self.frame;
    rect.size.height = 164;
    self.frame = rect;

}

Ответ 4

Для меня решение msgambel не работает. Но подход был правильным, я играл с inputView autoresizingMask. Раньше у меня была другая настройка, но правильный способ избежать лишнего лишнего пространства над пользовательской клавиатурой:

enter image description here

Я применил это только для внешнего вида.

enter image description here

Ответ 5

Кроме того, если вы используете UIViewController для проектирования вашего входного окна, не используйте UIViewController.view... у него, похоже, много проблем, когда вы неправильно изменяете размер, независимо от AutoresizeMask.

Что сработало для меня, так это взять мой существующий пользовательский интерфейс и использовать "Редактор" > "Вставить в" > "Просмотр". Затем создайте новую розетку и пропустите эту розетку как входной. Неожиданно изменилось изменение размера черепашек.