Отображение значения, которое может быть скопировано, но не изменено (Swift)

#ios #swift

#iOS #swift

Вопрос:

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

Что лучше использовать UILabel, UIButton, UITextField или UITextView?

Пока что единственное, что я нашел для работы, — это UITextView, установив:

 textView.isEditable = false
textView.isEditable.isUserInteractionEnabled = true
 

Однако, в качестве примера, представление изначально выглядит следующим образом:
введите описание изображения здесь, что, по-видимому, указывает на то, что результат равен 8 872 750 — нет никаких указаний на то, что цифр может быть больше.

На самом деле, фактический результат составляет 8 872 750 000 000 000 000 000 000.

Если я дважды щелкаю по текстовому представлению, я получаю: введите описание изображения здесьи могу скопировать содержимое.

Щелкнув в другом месте, а затем вернувшись в текстовое представление, я получаю: введите описание изображения здесь. Хотя я могу прокручивать, перетаскивая курсор вверх или вниз, я не могу этого сделать, если использую стрелки вверх или вниз.

С другой стороны, UITextField отображается следующим образом: введите описание изображения здесь. Содержимое может быть скопировано, но оно также может быть изменено или удалено.

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

Комментарии:

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

2. Вы также можете добавить кнопку копирования помимо метки и добавить текст на картонную доску программно UIPasteboard.general.string = "8,872,750,000,000,000,000,000"

3. @matt — как запретить изменять или удалять текст в текстовом поле, одновременно позволяя копировать его содержимое?

4. @Leo Dabus — На нескольких экранах много полей, поэтому, если я правильно понимаю, это было бы громоздко.

Ответ №1:

Я предлагаю использовать a UITextView с isSelectable значением true и isEditable значением false.

При желании можно настроить текстовое представление для добавления полосы прокрутки.

Комментарии:

1. Это отлично работает для textview с вертикальной прокруткой (хотя я еще не понял, как оставить полосу прокрутки всегда видимой, когда содержимое превышает высоту), но, хотя у меня есть `textview.showsHorizontalScrollIndicator = true’, это не работает. (Я что-то упустил?)

2. Кроме того, есть ли способ показать, когда цифр больше, чем отображается?