Пользовательский inputAccessoryView как UIView от пера, дающего ошибку: вернул 0 width, предполагая UIViewNoIntrinsicMetric - PullRequest
0 голосов
/ 29 мая 2018

Я использую 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 всегда должна быть шириной окна, в котором она отображается.

...