Как заставить UITextView прокручиваться горизонтально по мере ввода пользователем?

Кажется, это должно быть просто, но я не могу понять, как это сделать.

Я создал UITextView в построителе интерфейса. Он не сидит в ячейке таблицы или чем-то подобном.

Что я хотел бы сделать, так это прокрутить UITextView влево, когда пользователь набрал свой путь до правого поля.

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

Я пытался настроить размер содержимого UITextView в viewDidLoad, а также в viewDidAppear, и это не имеет значения.

Я также играл с настройками вставки в IB, но это не влияет на прокручиваемый размер, только ГДЕ он отображается.

У кого-нибудь есть идеи?


person oldbeamer    schedule 12.10.2009    source источник


Ответы (2)


Если вам нужна только одна строка текста, которая прокручивается, вам, вероятно, лучше подойдет UITextField. UITextView предназначены для ввода многострочного текста, поэтому перенос слов используется по умолчанию. Насколько я знаю, вы не можете переопределить это поведение.

person Alex    schedule 12.10.2009
comment
На самом деле, мне нужно несколько строк. - person oldbeamer; 13.10.2009
comment
Вы можете попробовать установить/переопределить свойство contentSize, но если это не сработает, вам, вероятно, не повезло. - person Alex; 13.10.2009

Хорошо, не похоже, что это можно сделать именно так, как я хотел, но я придумал хак, чтобы добраться туда.

Допустим, мне нужна прокручиваемая ширина 600 и видимая ширина 250.

Первый шаг — сделать UITextView такой же широкой, как область, которую вы хотите прокручивать. Итак, что бы вы поместили в contentSize, в данном случае 600.

Затем правая вставка устанавливается на разницу между фактической шириной и шириной, которую вы хотели. В данном случае 350.

Таким образом, курсор ограничивается необходимой шириной, НО текст виден справа от желаемой ширины, в конце концов, ширина UITextView IS составляет 600 пикселей.

Теперь вот где действительно хакерский бит, не читайте дальше, если вы чувствительны или у вас слабый желудок.

Получите изображение пользовательского интерфейса справа, где должен заканчиваться UITextView. Вставьте его в NIB как представление UIImage и верните на место, убедившись, что оно находится поверх UITextView.

Когда представление отображается, вырез находится поверх UITextView и скрывает выход за пределы текста.

Я не горжусь, но это работает.

person oldbeamer    schedule 14.10.2009