2016-10-30 3 views
1

Ich habe eine UITableView mit einer "Add new item" Zelle am unteren Rand. Wenn der Benutzer auf das Textfeld klickt, wird die Tastatur angezeigt, und die Tabellenansicht erhält eine Inhaltseinfügung, sodass sich ihr Fuß immer über der Tastatur befindet und nicht darunter verborgen ist. Das funktioniert schon fast perfekt, aber nachdem die Tastatur erschienen ist, wird die Tabellenansicht nicht mehr wie bisher nach unten gescrollt, sondern etwas über der Unterseite, so dass die untere Zelle teilweise von der Tastatur verdeckt wird.Einstellung Inhalt setzt UItableView ein wenig scrollen

den Inhalt Einsatz zu setzen, ich auf die Tastatur-Benachrichtigungen registrieren und diesen Code ausführen:

func adjustForKeyboard(notification: Notification) { 

    let userInfo = notification.userInfo! 

    let keyboardScreenEndFrame = (userInfo[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue 
    let keyboardViewEndFrame = view.convert(keyboardScreenEndFrame, from: view.window) 

    if notification.name == Notification.Name.UIKeyboardWillHide { 
     tableView.contentInset = UIEdgeInsets.zero 
    } else { 
     tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardViewEndFrame.height, right: 0) 
    } 

    tableView.scrollIndicatorInsets = tableView.contentInset 
} 

Hier ist auch ein paar Screenshots:

After keyboard appeared

How it should look

Antwort

2
let indexPath = IndexPath(row: 0, section: tableView.numberOfSections - 1) 
    tableView.scrollToRow(at: indexPath, at: .top, animated: false) 

Fügen Sie diese zwei Zeilen zwei mein Fu Ich habe es teilweise für mich repariert. Ich könnte schwören, ich habe das schon mal versucht, aber ich glaube nicht, dass ich die nicht animierte Version benutzt habe. Vielleicht macht das den Unterschied.

Verwandte Themen