Teclado personalizado iOS 8: cambiar la altura sin previo aviso "No se pueden satisfacer simultáneamente las restricciones …"

Hay varias respuestas de SO sobre cómo cambiar la altura del keyboard personalizado. Algunos de ellos funcionan, por ejemplo, aquí, pero los que funcionan conducen a un error de conflicto de restricciones impreso en la salida de la console:

Unable to simultaneously satisfy constraints... Will attempt to recover by breaking constraint... 

Aquí está mi controller de keyboard muy simple que establece la altura del keyboard personalizado (es Swift):

 class KeyboardViewController: UIInputViewController { private var heightConstraint: NSLayoutConstraint? private var dummyView: UIView = UIView() override func updateViewConstraints() { super.updateViewConstraints() if self.view.frame.size.width == 0 || self.view.frame.size.height == 0 || heightConstraint == nil { return } inputView.removeConstraint(heightConstraint!) heightConstraint!.constant = UIInterfaceOrientationIsLandscape(self.interfaceOrientation) ? 180 : 200 inputView.addConstraint(heightConstraint!) } override func viewDidLoad() { super.viewDidLoad() self.dummyView.setTranslatesAutoresizingMaskIntoConstraints(false) self.view.addSubview(self.dummyView) view.addConstraint(NSLayoutConstraint(item: self.dummyView, attribute: .Left, relatedBy: .Equal, toItem: self.view, attribute: .Left, multiplier: 1.0, constant: 0.0)) view.addConstraint(NSLayoutConstraint(item: self.dummyView, attribute: .Bottom, relatedBy: .Equal, toItem: self.view, attribute: .Bottom, multiplier: 1.0, constant: 0.0)) heightConstraint = NSLayoutConstraint(item: view, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 0.0) } } 

Esto produce el molesto error de salida que my heightConstraint que agregué en updateViewConstraints está en conflicto con constrained identificado como UIView-Encapsulated-Layout-Height .

Intenté eliminar constantes conflictivos ( UIView-Encapsulated-Layout-Height ) en updateViewConstraints siguiente manera:

 let defaultHeightConst = inputView.constraints().filter() {c in (c as? NSLayoutConstraint)?.identifier == "UIView-Encapsulated-Layout-Height"}.first as? NSLayoutConstraint if defaultHeightConst != nil { inputView.removeConstraint(defaultHeightConst! } 

Esto no ayudó, la advertencia de salida sigue ahí. ¿Cómo puedo solucionar esto? Específicamente, ¿qué puedo hacer para deshacerte del post de error de salida?

Intente establecer la prioridad de heightConstraint a less de 1000. Algo parecido a golpe:

 heightConstraint.priority = 990 

O

 heightConstraint.priority = 999