Отключить UITextView прокручивая содержащее представление? - PullRequest
2 голосов
/ 25 октября 2011

У меня есть UITextView внутри UIScrollView (в частности, текстовое представление находится в UITableViewCell в таблице).Когда я набираю текстовое представление и нажимаю клавишу возврата, чтобы создать несколько новых строк (и текст в текстовом представлении становится слишком длинным, чтобы содержать его вертикально), прокручивает как само текстовое представление (что нормально), так итаблица / ячейка таблицы, в которой она содержится (что я хотел бы предотвратить) .Есть ли какой-нибудь способ предотвратить это поведение?

  • UITableView имеет scrollEnabled, установленный в NO, но UITextView все еще заставляет его прокручиваться.
  • Я думал о создании подкласса UITextView и переопределенииscrollRectToVisible ничего не делать, но я не против прокрутки самого текстового представления, я хочу остановить прокрутку содержащего представления.
  • Аналогично, установка scrollEnabled в NO в текстовом представлении только предотвращает прокрутку, а нетаблица / ячейка таблицы.
  • Текстовое представление не скрыто клавиатурой, но, похоже, оно все еще хочет приблизиться к верхней части экрана.

Ответы [ 4 ]

1 голос
/ 19 сентября 2012

Этому вопросу почти год, но он какое-то время сводил меня с ума.

Мне наконец-то удалось отключить это поведение, создав подкласс UITextView, переопределив метод с именем scrollRectToVisibleInContainingScrollView и абсолютно ничего не делая в реализации.

Это частный недокументированный метод UITextView, который, очевидно, обрабатывает автоматическую прокрутку суперпредставления. Поскольку все, что мы делаем, это создаем подкласс и переопределяем метод (и, следовательно, не полагаемся на его существующий заранее), он должен быть приемлемым.

0 голосов
/ 01 октября 2013

Я думаю, что у Джонатана М есть правильное решение (я проголосовал за него).

У меня был UITextView в UITableViewCell, который иногда прокручивал представление таблицы вверх, когда пользователь печатал текст, и текст выходил за пределы прямоугольника содержимого представления прокрутки.

Вместо подкласса я использовал категорию.

@interface UITextView (DISABLE_SCROLL_CONTAINING_VIEW)

- (void) scrollRectToVisibleInContainingScrollView;

@end

@implementation UITextView (DISABLE_SCROLL_CONTAINING_VIEW)

- (void) scrollRectToVisibleInContainingScrollView {
  return;
}

@end

entering text caused the containing table view to scroll up

0 голосов
/ 19 сентября 2012

Не ясно, как именно вы хотите, чтобы это работало. В случае, если вам просто нужно предотвратить автопрокрутку, тогда этот ответ может помочь. Как насчет того, чтобы получить поведение, аналогичное стандартному приложению для напоминаний, когда высота UITextView увеличивается? Я реализовал такое поведение в примерах для моей библиотеки TableKit

0 голосов
/ 24 ноября 2011

Что бы это ни стоило, я наконец решил эту проблему, удалив UITextView из UITableViewCell (и добавив его в контроллер представления, содержащий представление таблицы) во время редактирования, а затем вернув его в UITableViewCell, когда закончите.

...