2017-10-02 2 views
0

Es gibt ein paar UITextField in einer Zelle meiner statischen UITableView. Die meisten von ihnen sind in Ordnung, wenn Sie sich konzentrieren.iOS Keyboard Abdeckung einige UITextField in statischen Tabellenansicht Zelle

enter image description here

enter image description here

Aber wenn einige der Felder Fokus erhalten (wenn ich das Gerät nicht Feld zum Beispiel klicken), springt die Zelle und Tastatur wie folgt abgedeckt werden.

enter image description here

bekam total keine Ahnung. Irgendeine Idee? Vielen Dank.

+0

schließlich den Grund finden. Es wird dieses Problem verursachen, wenn eine Zelle höher als die Bildschirmhöhe ist. –

Antwort

0

Haben Sie IQKeybordManager POD versucht. Es verwaltet alles automatisch.

2

Versuchen Sie mit diesem Pod https://github.com/hackiftekhar/IQKeyboardManager, Es deckt alle Tastatur-Szenario.

Wenn Sie benutzerdefinierte Code verwenden möchten, müssen Sie für abonnieren UIKeyboardWillShow und UIKeyboardWillHide in viewWillAppear und abmelden in viewWillDisappear. Nach diesem Override touchesBegan wird dies alle Ihre Berührungen auf dem Bildschirm behandeln, können Sie in dieser Funktion beenden.

Mein Beispielcode:

override func viewWillAppear(_ animated: Bool) { 

    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow), name: .UIKeyboardWillShow, object: nil) 
    NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide), name: .UIKeyboardWillHide, object: nil) 

} 

override func viewWillDisappear(_ animated: Bool) { 

    NotificationCenter.default.removeObserver(self) 
} 

func keyboardWillShow(notification: NSNotification) { 
    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue { 
     UIView.animate(withDuration: 1, animations: { 
      self.view.bounds.origin.y += keyboardSize.height 
     } 
    } 
} 

func keyboardWillHide(notification: NSNotification) { 
    self.view.bounds.origin.y = 0 
} 
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { 

    self.view.endEditing(true) 
} 
+0

Das ist eine gute Bibliothek. Aber löst mein Problem nicht. Die Tastatur deckt immer noch das Feld ab, wenn ich bestimmte Felder bewege. –

+0

Wenn Sie den IQKeyboard Manager verwenden, rufen Sie in ViewWillAppear super.viewWillAppear auf, und kein Aufruf von superView verursacht ein solches Problem in IQKeyboard Manager – maniarali

+0

Immer noch das gleiche. Einige UITextFields mit Fokus werden immer noch von der Tastatur blockiert. –

Verwandte Themen