storyboard - for - Guión gráfico de teclado personalizado con Xcode 8 beta
xcode descargar (2)
Avíseme si me falta algo sobre el problema. Si es necesaria información adicional, use los comentarios y actualizaré la respuesta.
Creo que es posible que desee reducir la Prioridad de resistencia a la compresión de contenido de la vista superior si desea que se expanda la vista inferior. No está claro en su pregunta si desea mantener un espaciado proporcional entre la vista superior y la vista inferior.
Puede ejecutar la aplicación en el Simulador o en el dispositivo y luego activar la depuración de la vista e intentar descubrir qué está pasando con la vista superior. Lo más probable es que sea de tamaño cero o se esconda detrás de una vista inesperada. Cuando se ve la depuración, debe hacer clic en la vista para ver su contorno. También hay una opción para ver las restricciones para que pueda determinar cuál puede afectar la vista de forma inesperada.
Estoy teniendo problemas para diseñar mi teclado personalizado en el guión gráfico de Xcode 8 beta 6.
Por alguna razón, cuando abro el teclado en un dispositivo iOS 10, este es el resultado:
Así es como lo diseño en el Storyboard, Vista superior:
Vista inferior:
Por lo tanto, solo muestra el alto de la vista inferior.
No tengo este problema con iOS 9.
Alguna idea sobre lo que está mal?
ACTUALIZAR :
así es como se carga el teclado en iOS 9:
ACTUALIZACIÓN 2:
Incluso la creación de la vista mediante programación de esta manera en viewDidLoad () no funciona:
self.view.backgroundColor = UIColor.orange
let bottomView = UIView()
bottomView.backgroundColor = UIColor.blue
self.view.addSubview(bottomView)
bottomView.translatesAutoresizingMaskIntoConstraints = false
let trailing = bottomView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor)
let leading = bottomView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor)
let bottom = bottomView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor, constant: -50)
let top = bottomView.topAnchor.constraint(equalTo: self.view.topAnchor, constant: 0)
NSLayoutConstraint.activate([trailing, leading, bottom, top])
Escribí al informe de error de Apple.
Espero recibir noticias de ellos
Tuve el mismo problema. Supongo que no tiene una altura establecida en el bloque verde porque quiere que ocupe el espacio restante del teclado. Si desea que el teclado tenga una altura CONSTANTE, puede establecer una restricción de altura en el bloque verde y listo, pero debido a los tamaños de pantalla y las orientaciones, probablemente no desee una altura para todo.
En iOS 9, el tamaño predeterminado para un teclado personalizado era el mismo que el del sistema. Entonces, si ejecuta esto en iOS 9, el bloque verde llena el espacio restante en función de esas dimensiones. En iOS 10, por alguna razón, no hay una altura predeterminada, y como su bloque verde no tiene una restricción de altura, cree que la altura es cero.
Para solucionarlo necesitas establecer una altura para tu teclado. Este es el código que escribí para manejarlo (y hasta ahora todo bien). Coloque esto en la clase keyboardviewcontroller antes de ViewDidLoad y debería estar listo:
//***************************
//create constraint variable before function
var constraint = NSLayoutConstraint()
//function to set height
func setKeyboardHeight () {
let screenSize = UIScreen.mainScreen().bounds.size
let screenH = screenSize.height;
self.view.removeConstraint(constraint)
//you can set the values below as needed for your keyboard
if screenH >= 768 {
//for iPad landscape or portrait
self.constraint = NSLayoutConstraint(item: self.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 0.0, constant: 300.0)
self.view.addConstraint(self.constraint)
} else if screenH >= 414 {
//for iPhone portrait AND iPhone Plus landscape or portrait
self.constraint = NSLayoutConstraint(item: self.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 0.0, constant: 220.0)
self.view.addConstraint(self.constraint)
} else {
//for iPhone landscape
self.constraint = NSLayoutConstraint(item: self.view, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 0.0, constant: 140.0)
self.view.addConstraint(self.constraint)
}
}
//sets height when keyboard loads
override func updateViewConstraints() {
super.updateViewConstraints()
// Add custom view sizing constraints here
setKeyboardHeight()
}
//sets or changes height when device rotates
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
setKeyboardHeight()
}
//***************************