2014-09-21 4 views
5

Ändern der Höhe Ihrer benutzerdefinierten Tastatur ist einfach nach documentation. Hier ist die rasche-Äquivalent-Version von Code in Apples Dokumentation gezeigtiOS 8 Benutzerdefinierte Tastatur App Erweiterung - Ändern der Höhe für die Orientierung

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) 
} 

Dies funktioniert, aber es ändert sich die Höhe auf einen konstanten Wert, der nicht wünschenswert ist, wenn Sie die Ausrichtung des Geräts ändern. Die Einstellung der Tastaturhöhe auf 400,0 ist im Hochformat zwar möglich, im Querformat jedoch wahrscheinlich nicht. Beispiel: Die Standardgröße für die Tastaturansicht eines iPhone 5 beträgt 320.216 im Hochformat und 568.162 im Querformat. Wenn Sie eine konstante Höhe einstellen, ändert sich die Größe der Tastaturansicht im Hochformat auf 320.400 und im Querformat auf 568.400 (das ist effektiv der gesamte Bildschirm).

Mein einziger Gedanke ist jetzt, ein Wörterbuch zu erstellen, das die Tastaturansichtsgröße für jeden Gerätetyp und jede Ausrichtung enthält, und dann die Beschränkung der konstanten Höhe jedes Mal zu aktualisieren, wenn das Gerät die Ausrichtung ändert. Hat jemand eine elegantere Lösung gefunden?

+0

Auf der Suche nach der gleichen Antwort auch – honcheng

Antwort

2

Ich habe dies getan, indem ich willAnimateRotationToInterfaceOrientation: in meiner Tastatur Ansicht Controller implementiert. Theoretisch sollten wir die neue willTransitionToTraitCollection:withTransitionCoordinator: oder idealerweise vielleicht viewWillTransitionToSize:withTransitionCoordinator: verwenden, aber diese werden anscheinend nicht auf UIInputViewControllers aufgerufen, zumindest ab 8.0.2. Die beste Option scheint also zu sein, einen Verweis auf Ihre heightConstraint beizubehalten und die Konstante in Ihrer Implementierung von willAnimateRotation zu ändern.

Auch ich erinnere mich, dass es ein bisschen ein Gotcha mit tatsächlich herauszufinden, die neue Ausrichtung war; Ich landete etwas wie:

let isLandscape: Bool = UIInterfaceOrientationIsLandscape(toInterfaceOrientation) und dann mit dem.

Verwandte Themen