UITableView не будет прокручиваться после редактирования рамки просмотра и источника - PullRequest
0 голосов
/ 03 декабря 2009

Я пытаюсь реализовать UITextView в ячейке таблицы в нижней части табличного представления.

Я попробовал предложения здесь Создание прокрутки UITableView, когда текстовое поле выделено , и другие решения, но они немного отличаются, потому что я должен искусственно добавить дополнительную высоту к текущему чтобы создать пространство для клавиатуры.

Вот что я добавил в предыдущее решение, чтобы перенести его в мое приложение.

-(void) keyboardWillShow:(NSNotification *)note {
      CGRect frame = self.view.frame;
      frame.size.height += keyboardHeight;
      frame.origin.y -= keyboardHeight;
        self.view.frame = frame;
}

-(void) keyboardWillHide:(NSNotification *)note
{
        CGRect frame = self.view.frame;
        frame.size.height -= keyboardHeight;
    frame.origin.y += keyboardHeight;

}

Это позволит правильно добавить высоту к представлению и прокрутить до ячейки, но после восстановления высоты исходного представления прокрутка за пределами текущего видимого представления становится невозможной, даже если за пределами границ имеется допустимое содержимое (я вижу просмотр текста до того, как полоса прокрутки отскочит назад).
Если я попытаюсь сохранить рамку или границы табличного представления (не представление) в keyboardWillShow и восстановить их в keyboardWillHide, прокрутка будет восстановлена, но представление будет разрезано пополам.

Существуют ли какие-либо способы решения этой проблемы, кроме жесткого кодирования дополнительной высоты в нижней части вида?

1 Ответ

3 голосов
/ 08 декабря 2009

Мне удалось решить мою проблему с заблокированной прокруткой, удалив код, который редактирует происхождение представления. Кроме того, я реализовал прокрутку до нижней ячейки, используя в своих расчетах свойство contentSize таблицы.

-(void) keyboardWillShow:(NSNotification *)note
{

  if(!isKeyboardShowing)
    {
    isKeyboardShowing = YES;
    CGRect keyboardBounds;
    [[note.userInfo valueForKey:UIKeyboardBoundsUserInfoKey] getValue: &keyboardBounds];
    CGFloat keyboardHeight = keyboardBounds.size.height;

            CGRect frame = self.view.frame;
            frame.size.height += keyboardHeight;
            self.view.frame = frame;

    CGPoint scrollPoint = frame.origin;
    scrollPoint.y += _tableView.contentSize.height - keyboardHeight;
    [_tableView setContentOffset:scrollPoint animated:YES];
    }
}
...