Я использую inputAccessoryView, который загружается из пера с использованием следующего подкласса UIView:
class CustomInputAccessoryView: UIView {
@IBOutlet var containerView: UIView!
@IBOutlet var contentView: UIView!
@IBOutlet weak var button1: UIButton!
@IBOutlet weak var button2: UIButton!
@IBOutlet weak var textView: UITextView!
override var intrinsicContentSize: CGSize {
return CGSize.zero
}
override init(frame: CGRect) {
super.init(frame: frame)
setupInputAccessoryView()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setupInputAccessoryView()
}
func setupInputAccessoryView() {
self.translatesAutoresizingMaskIntoConstraints = false
Bundle.main.loadNibNamed("CustomInputAccessoryView", owner: self, options: nil)
addSubview(containerView)
containerView.frame = self.bounds
}
}
Я назначаю представление для inputAccessoryView и настраиваю его следующим образом:
var customInputAccessoryView = CustomInputAccessoryView()
InputAccessoryView загружается правильно и отображается правильно.Проблема в том, что когда я нажимаю внутри textView для inputAccessoryView и отображается клавиатура, я получаю следующую ошибку:
<_UIKBCompatInputView: ...; frame = (0 0; 0 0); layer = <CALayer: ...>> returned 0 width, assuming UIViewNoIntrinsicMetric
У меня есть два файла, файл .swift, который является подклассом UIView, показанным выше, ифайл пера с тем же именем.В владельце файла пера я выбираю подкласс (CustomInputAccessoryView) и подключаю розетки.
Я действительно не знаю, что происходит, кроме, может быть, представления вспомогательного ввода автоматически изменяющего размер до нулевого кадра всякий раз, когдаклавиатура отображается перед переходом на правильный размер.Если это так, я предполагаю, что мне нужно изменить некоторые приоритеты AutoLayout, но то, что я пробовал, не работает.Единственными жесткими ограничениями ширины являются кнопки с фиксированной шириной.
Ширина inputAccessoryView всегда должна быть шириной окна, в котором она отображается.