2016-10-30 2 views
1

У меня есть UITableView с ячейкой «добавить новый элемент» внизу. Когда пользователь набирает текстовое поле, появляется клавиатура, а в tableview появляется вставка содержимого, так что ее нижняя часть всегда находится над клавиатурой, а не скрывается под ней. Это уже работает почти отлично, но после появления клавиатуры табличное представление больше не прокручивается на дно, как и раньше, оно немного выше дна, так что нижняя ячейка частично покрыта клавиатурой.Настройка вставки содержимого делает UItableView немного прокручивается

Чтобы установить вставку содержимого, зарегистрироваться на уведомления клавиатуры и запустить этот код:

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 
} 

Здесь также некоторые скриншоты:

After keyboard appeared

How it should look

ответ

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

Добавление этих двух строк два моих фу для меня исправлено это частично. Я могу поклясться, я пробовал это раньше, но я не думаю, что использовал не анимированную версию. Возможно, это имеет значение.

Смежные вопросы