Изменить высоту пользовательской клавиатуры очень просто, согласно документации. Вот версия кода, эквивалентная быстрой, показанная в документации Apple.
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
let constraint = NSLayoutConstraint(item: self.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 0.0, constant: 400.0)
self.view.addConstraint(constraint)
}
Это работает, но меняет высоту на ПОСТОЯННОЕ значение, что нежелательно, если вы меняете ориентацию устройства. Установка высоты клавиатуры на 400,0 может быть хорошей в портретном режиме, но, вероятно, не будет подходить в ландшафтном режиме. Например: стандартный размер клавиатуры для iPhone 5 составляет 320 216 в портретной ориентации и 568 162 в альбомной ориентации. Установка постоянной высоты изменяет размер экрана клавиатуры на 320 400 в портретной ориентации и на 568 400 (что фактически составляет весь экран) в альбомной ориентации.
Моя единственная мысль прямо сейчас - создать словарь, содержащий размер представления клавиатуры для каждого типа устройства и каждой ориентации, а затем обновлять ограничение постоянной высоты каждый раз, когда устройство меняет ориентацию. Кто-нибудь нашел более элегантное решение?