UITextView внутри UIScrollView с AutoLayout

Я пытаюсь разместить UITextView внутри UIScrollView с помощью AutoLayout без везения. То, что я пробовал,

  • Я разместил UIScrollView внутри основного вида в Storyboard
  • Я разместил UITextView внутри UIScrollView в Storyboard и отключил прокрутку включен
  • Я установил ограничения (ведущий, конечный, верхний, нижний) в UIScrollView
  • Я установил ограничения (верхний, верхний, конечный, высотный) в UITextView
  • Я создал IBOutlet ограничения высоты UITextView
  • Я установил текст (много текста, который может вызвать прокрутку) в UITextView в viewDidLoad ()
  • Я установил ограничение по высоте UITextView с помощью кода ниже. Я пробовал это сразу после установки текста в viewDidLoad () и viewDidLayoutSubviews () без везения

self.textViewHeightConstraint.constant = [self.textView sizeThatFits:CGSizeMake(self.textView.frame.size.width, FLT_MAX)].height;

UITextView достигает своей высоты, но UIScrollView – нет. Я что-то пропустил?

После нескольких дней исследований и загрязнения рук с помощью UIScrollView + UITextView + Auto Layout я успешно получил полностью работающий UIScrollView. Я хочу поделиться своим решением на случай, если кто-то застрянет в той же ситуации.

  1. Добавить UIScrollView в главном окне раскадровки
  2. Добавить UIView внутри UIScrollView
  3. Добавить UITextView внутри UIView (представление, добавленное на шаге 2)
  4. Убедитесь, что флажок «Прокрутка включена» UITextView не отмечена
  5. Добавьте 4 ограничения (ведущий, конечный, верхний, нижний) в UIScrollView
  6. Добавьте 4 ограничения (ведущий, конечный, верхний, нижний) в UIView (представление, добавленное на шаге 2)
  7. Добавьте ограничение «Width Equally» на UIView (представление, добавленное на шаге 2), и основной вид
  8. Добавьте 5 ограничений (ведущий, конечный, верхний, нижний, высота) в UITextView. После этого шага вы не должны получать никаких ошибок и предупреждений об ограничениях.
  9. Добавьте ограничение высоты UITextView IBOutlet в ViewController. @property (nonatomic, weak) IBOutlet NSLayoutConstraint *textViewHeightConstraint; и подключите его к раскадровке
  10. Измените ограничение по высоте UITextView программно. self.textViewHeightConstraint.constant = [self.textView sizeThatFits:CGSizeMake(self.textView.frame.size.width, CGFLOAT_MAX)].height;

После всех этих 10 шагов вы получите полностью работающий UIScrollView с UITextView внутри и будьте счастливы.

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

Размещение текстового представления внутри прокрутки. Текстовые представления обрабатывают собственную прокрутку. Вы не должны вставлять объекты просмотра текста в представления прокрутки. Если вы это сделаете, может возникнуть непредвиденное поведение, потому что события касания для двух объектов могут быть перемешаны и неправильно обработаны.

Прежде чем пытаться поместить UITextView в UIScrollView вы должны подумать, действительно ли это необходимо. Если текстовое представление является частью сложного макета в представлении прокрутки, обратите внимание на использование контейнера UIView в принятом ответе.

См. Также: Прокрутка Просмотров Внутренний просмотр прокрутки

У меня есть пример того, как вычислять высоту для динамической высоты UITextView + внутри UIStackView, которая находится внутри UIScrollView здесь: https://github.com/fassko/ScrollStackViewExample

  • Зачем использовать протокол NSObject для реализации протокола
  • iphone facebook side menu с помощью объектива c
  • Есть ли какие-либо frameworks для выделения текста в pdf-файле после рендеринга на iphone
  • Как вы вычисляете день года на определенную дату в Objective-C?
  • Получить нажатие кнопки внутри UITableViewCell
  • Программно извлекать использование памяти на iPhone
  • как зарегистрировать приложение, чтобы открыть файл pdf в моем приложении в ipad
  • Позиционирование MKMapView для одновременного отображения нескольких аннотаций
  • Нарисуйте часть круга
  • Аккордеонная ячейка таблицы - Как динамически расширять / сокращать uitableviewcell?
  • Есть ли документальный способ настройки ориентации iPhone?
  • Давайте будем гением компьютера.