Как отключить функцию выбора в UITextView?

Я хочу создать область отображения текста (либо UILabel, либо UITextView) в моем приложении для iPhone, которое (1) позволяет прокручивать, а (2) не позволяет выбирать. Я безуспешно пробовал следующие техники:

  1. Базовый UILabel: не позволяла прокручивать и обрезать текст в нижней части пространства UILabel на экране.
  2. Гигантский UILabel в UIScrollView: UILabel продолжал размещать текст (вертикально) в центре гигантского UILabel, поэтому часто он находился за пределами моего UIScrollView.
  3. UITextView: до сих пор этот подход работал лучше всего, потому что он прокручивает и не обрезает текст. Я могу даже создать подкласс UITextView, чтобы включить изменение размера текста, чтобы он соответствовал текстовому представлению, и передача любых событий касания в супервизор для обнаружения касаний и смахиваний. Но когда пользователь нажимает и удерживает сам текст, появляется интерфейс выбора текста. Меня не интересует этот интерфейс, и он действительно отвлекает от работы пользователя. Я попытался создать подкласс canPerformAction:withSender:, но, очевидно, эта функция вызывается после события касания, а не до него.

Кто-нибудь знает, как отключить интерфейс выделения текста в UITextView, не отключая при этом прокрутку?


person Jason    schedule 03.08.2010    source источник


Ответы (1)


Выберите вариант номер 2, но установите для свойства numberOfLines вашего UILabel значение 0. Это установит количество строк на «неограниченное» и предотвратит вертикальное центрирование текста.

Не забудьте установить для свойства lineBreakMode значение UILineBreakModeWordWrap, чтобы текст не выходил за пределы UILabel.

person Jasarien    schedule 03.08.2010
comment
У меня это сработало, но с UIScrollView сложно. Мне все еще нужно было динамически изменять размер каждого UILabel, чтобы текст отображался вверху. - person Jason; 03.08.2010