Tastatur über Textfelder - wie den Screen bewegen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Tastatur über Textfelder - wie den Screen bewegen?

    Hallo Alle zusammen,

    ich versuche den Screen mit dem Ein- und Ausblenden der Tastatur zu bewegen.
    Das klappt in Teilen auch schon, allerdings hänge ich gerade ein wenig dabei, den Screen an eine nicht ganz ausgefahrene Tastatur anzupassen (siehe Bild). Sprich, wenn nur die Wortvorschläge zu sehen sind.
    Hat jemand einen Tipp?


    Quellcode

    1. class GameViewController: UIViewController, UITextFieldDelegate {
    2. override func viewDidLoad() {
    3. super.viewDidLoad()
    4. NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
    5. NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameViewController.keyboardWillHide(_:)), name: UIKeyboardWillHideNotification, object: nil)
    6. }
    7. func keyboardWillShow(notification: NSNotification) {
    8. var userInfo = notification.userInfo!
    9. let keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue()
    10. let keyboardHeight: CGFloat = keyboardFrame.height
    11. self.view.frame.origin.y = keyboardHeight * (-1)
    12. }
    13. func keyboardWillHide(notification: NSNotification) {
    14. self.view.frame.origin.y = 0
    15. }
    Alles anzeigen


    Bildschirmfoto.png


    Mir ist in der Ausgabe auffallen, dass er die Höhe der Tastatur - obwohl sie nicht ganz ausgefahren ist, trotzdem bei 368 PT festsetzt. Sprich es entsteht ein schwarzer Bereich zwischen dem UIView und der Tastatur.

    Beste Grüße und danke schonmal.
    Krusel
  • Super! Danke dir. Hat mir die Augen geöffnet. Das Problem war, dass ich die höhe der Tastatur abgefragt habe bzw. des Tastatur Rectangles. Dieses ändert sich nicht, da immer die komplette Tastatur angezeigt wird, auch wenn sie OffScreen und damit nicht vollständig zu sehen ist. Sprich, man muss erst den Bereich festlegen, der OnScreen erscheint.

    Ich bin dann folgendermaßen vorgegangen:
    1. Habe ein Rectangle erzeugt, dass die ScreenGröße hat (Screen: CGRect = self.frame.view)
    2. Habe die Überschneidung von Tastatur Rectangle und Screen Rectangle in einem dritten Rectangle festgehalten.
    3. Die Höhe des dritten Rectangles entspricht dem OnScreen Bereich der Tastatur und ist damit die zu verändernde Größe, nach der self.view.frame verschoben werden muss.

    Der Quellcode sieht jetzt so aus:


    Quellcode

    1. class GameViewController: UIViewController, UITextFieldDelegate {
    2. override func viewDidLoad() {
    3. super.viewDidLoad()
    4. NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameViewController.keyboardWillShow(_:)), name: UIKeyboardWillShowNotification, object: nil)
    5. NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(GameViewController.keyboardWillHide(_:)), name: UIKeyboardWillHideNotification, object: nil)
    6. }
    7. func keyboardWillShow(notification: NSNotification) {
    8. var userInfo = notification.userInfo!
    9. var Screen: CGRect = self.view.frame
    10. let keyboardFrameEnd:CGRect = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).CGRectValue()
    11. var IntersectEnd: CGRect = Screen.intersect(keyboardFrameEnd)
    12. var IntersectEndY: CGFloat = CGRectGetHeight(IntersectEnd)
    13. print (IntersectEnd)
    14. print (IntersectEndY)
    15. self.view.frame.origin.y = 0
    16. self.view.frame.origin.y = self.view.frame.origin.y - IntersectEndY
    17. }
    Alles anzeigen
    Danke nochmal.
    Krusel