Tableview despliega contenido cuando el keyboard muestra

Tengo una vista de tabla con un campo de text y una vista de text. He implementado este código como lo sugiere este código de muestra de Apple https://developer.apple.com/library/ios/documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/KeyboardManagement/KeyboardManagement.html

@IBOutlet var myTableView: UITableView func keyboardWasShown (notification: NSNotification) { println("keyboard was shown") var info = notification.userInfo var keyboardSize = info.objectForKey(UIKeyboardFrameBeginUserInfoKey).CGRectValue().size myTableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0) myTableView.scrollIndicatorInsets = myTableView.contentInset } func keyboardWillBeHidden (notification: NSNotification) { println("keyboard will be hidden") myTableView.contentInset = UIEdgeInsetsZero myTableView.scrollIndicatorInsets = UIEdgeInsetsZero } override func viewDidLoad() { super.viewDidLoad() NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWasShown:", name: UIKeyboardDidShowNotification, object: nil) NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardWillBeHidden:", name: UIKeyboardWillHideNotification, object: nil) } 

Cuando hago clic en el "text" de la vista de desplazamiento, veo justo encima de la parte superior de la pantalla, pero cuando suelto el keyboard, se mantiene desplazado hacia arriba. Es como si la propiedad de inserciones no se puede modificar después de la primera vez. ¿Cuál es mi error?

Intenta mantener la ruta del índice de edición editingIndexPath Obtener la ruta del índice y desplazar la vista de la tabla a esa ruta del índice

 func keyboardWasShown (notification: NSNotification) { println("keyboard was shown") var info = notification.userInfo var keyboardSize = info.objectForKey(UIKeyboardFrameBeginUserInfoKey).CGRectValue().size var contentInsets:UIEdgeInsets if UIInterfaceOrientationIsPortrait(UIApplication.shanetworkingApplication().statusBarOrientation) { contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.height, 0.0); } else { contentInsets = UIEdgeInsetsMake(0.0, 0.0, keyboardSize.width, 0.0); } myTableView.contentInset = contentInsets myTableView.scrollToRowAtIndexPath(editingIndexPath, atScrollPosition: .Top, animated: true) myTableView.scrollIndicatorInsets = myTableView.contentInset } 

Utilice el código siguiente para get Indexpath y cambiar el contenido UITableview Compensación basada en la altura de UIKeyboard

  func keyboardWillShow(notification: NSNotification) { if ((notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue()) != nil { //self.view.frame.origin.y -= keyboardSize.height var userInfo = notification.userInfo! var keyboardFrame:CGRect = (userInfo[UIKeyboardFrameBeginUserInfoKey] as! NSValue).CGRectValue() keyboardFrame = self.view.convertRect(keyboardFrame, fromView: nil) var contentInset:UIEdgeInsets = self.tbl.contentInset contentInset.bottom = keyboardFrame.size.height self.tbl.contentInset = contentInset //get indexpath let indexpath = NSIndexPath(forRow: 1, inSection: 0) self.tbl.scrollToRowAtIndexPath(indexpath, atScrollPosition: UITableViewScrollPosition.Top, animated: true) } } func keyboardWillHide(notification: NSNotification) { if ((notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue()) != nil { let contentInset:UIEdgeInsets = UIEdgeInsetsZero self.tbl.contentInset = contentInset } } 
 override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(ViewController.keyboardWillHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil) } func keyboardWillShow(_ notification:Notification) { if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue { tableView.contentInset = UIEdgeInsetsMake(0, 0, keyboardSize.height, 0) } } func keyboardWillHide(_ notification:Notification) { if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.cgRectValue { tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0) } } [enter image description here][1]