Как правильно реализовать UIPasteboard.general.string + actionSheet?

Для правильной реализации UIPasteboard.general.string с ActionSheet в приложении на Swift вам понадобится следовать нескольким шагам:

Шаг 1: Создание ActionSheet
Сначала нужно создать экземпляр класса UIAlertController с типом UIAlertController.Style.actionSheet:

let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)

Шаг 2: Создание действия для копирования
Затем нужно создать действие, которое скопирует текст из UIPasteboard.general.string в буфер обмена:

let copyAction = UIAlertAction(title: "Копировать", style: .default) { _ in
    if let text = UIPasteboard.general.string {
        UIPasteboard.general.string = text
    }
}

Шаг 3: Создание действия для отмены
Также нужно добавить действие для отмены:

let cancelAction = UIAlertAction(title: "Отмена", style: .cancel)

Шаг 4: Добавление действий в ActionSheet
Добавляем созданные действия в ActionSheet:

actionSheet.addAction(copyAction)
actionSheet.addAction(cancelAction)

Шаг 5: Отображение ActionSheet
Наконец, отображаем ActionSheet на экране из контроллера представления, используя метод present(_:animated:completion:):

if let popoverController = actionSheet.popoverPresentationController {
    popoverController.sourceView = sourceView // Здесь sourceView - это представление, из которого вы запускаете действие
    popoverController.sourceRect = sourceView.bounds
}
present(actionSheet, animated: true, completion: nil)

Теперь при нажатии кнопки или другого инициатора, связанного с отображением ActionSheet, будет показано действие копирования текста, а затем пользователь сможет выбрать "Копировать" или "Отмена". Если пользователь выберет "Копировать", текст из UIPasteboard.general.string будет скопирован в буфер обмена.

Обратите внимание, что код примера предоставляется исключительно в качестве демонстрации и может потребовать дополнительной настройки в вашем проекте.