Предотвратить перенос слов с помощью UITextView - PullRequest
5 голосов
/ 04 февраля 2010

с использованием Iphone SDK 3.1.2

У меня есть элемент управления UITextView с включенной вертикальной и горизонтальной прокруткой. Я хочу, чтобы каждая строка текста отображалась без переноса, чтобы пользователь мог прокручивать ее по горизонтали, чтобы увидеть ее. У меня проблема в том, что даже при включенной горизонтальной прокрутке текст переносится по ширине экрана iphone, т.е. 320 пикселей.

Как я могу предотвратить упаковку?

Спасибо

Ответы [ 6 ]

5 голосов
/ 10 ноября 2010

Используйте sizeWithFont: из дополнений NSString UIKit, чтобы получить ширину каждой строки, затем установите свойство contentSize вашего UITextView немного шире, чем ширина самой длинной строки.

У меня возникла проблема при попытке применить эту стратегию, которая возникает при назначении строки в текстовое свойство UITextView. При назначении UITextView установит свой contentSize.width в соответствии с шириной представления и вставит новые строки в назначенную текстовую строку, чтобы обернуть его до этой ширины. Вы можете установить для contentSize.width длину самой длинной строки после назначения uitextview.text, и это дает дополнительное пространство в представлении прокрутки, но новые строки не позволяют тексту заполнять новое пространство.

Если вы установили contentize.width до загрузки текста в представление, contentSize просто сбрасывается, когда вы загружаете текст.

Я попытался увеличить размер кадра текстового представления перед загрузкой, это работает, чтобы ваши длинные строки проходили мимо края экрана. Но вы не можете прокрутить, и в тот момент, когда вы уменьшаете размер фрейма, искажение новой строки вашего текста и перенастройка contentSize происходит снова. То же самое происходит, если какой-либо текст вообще вводится в представление.

Ну, я убежден, что uitextviews просто не способны или не предназначены для горизонтальной прокрутки в этой точке. Я не вижу, как встраивание текстового представления в другое представление прокрутки может облегчить это либо. Просто нужно сделать это в HTML ...

3 голосов
/ 03 января 2015

Я столкнулся с похожими проблемами. Вот мое решение с Auto Layout.

  1. Поместите ваш UITextView в scrollView. Прикрепите границы текстового представления к границам прокрутки.

  2. Используйте два IBOutlet для ширины и высоты UITextView. Я называю их "высота ограничения" и "ширина ограничения"

  3. Используйте следующий код в вашем контроллере вида:

    - (void)viewWillLayoutSubviews {
        CGSize fit = [self.textView sizeThatFits:CGSizeMake(10000, 10000)];
        self.widthConstraint.constant = fit.width;
        self.heightConstraint.constant = fit.height;
    }
    

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

3 голосов
/ 20 октября 2011

Решение состоит в том, чтобы отключить все параметры прокрутки в самом UITextView, а затем внедрить его в другой UIScrollView. Фактический код можно получить, выполнив поиск по этому слову «DualScrollTextView» в Google.

1 голос
/ 07 февраля 2010

Я думаю, что вы застряли с помещением поля UIText в представление прокрутки.

0 голосов
/ 14 мая 2019

У меня ушло навсегда понять, что в моих данных есть \ n. Так что это не было в конце концов! На случай, если это случится с вами:

self.titleText.text = viewModel.title.replacingOccurrences(of: "\n", with: "");
0 голосов
/ 12 февраля 2013

Woot Я получил это.

Я установил ширину UITextView на 500 на .xib. В моем коде я установил myUITextView.text = @ "какая-то огромная строка с множеством строк";

Тогда я установил myUITextView.contentSize = CGSizeMake (600, myUITextView.contentSize.height);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...