Завершение кода Xcode предполагает `printContent(_)` над `print(_)`

#xcode #nsobject #code-completion #uiresponder

Вопрос:

Используя Xcode 13, введите любую подстроку из print предложенных printContent() сначала в списке завершения кода Xcode над общими print() функциями Swift.

printКонтент первый в списке

printContent(_ sender: Any?)
Указывает приложению, чтобы оно печатало доступный контент.

«Переход к определению» отображает следующее объявление, новое для iOS 15 в 2021 году:

 public protocol UIResponderStandardEditActions : NSObjectProtocol {
    
    // ...
    
    @available(iOS 15.0, *)
    optional func printContent(_ sender: Any?)
}
 

Что это за printContent() функция и как она используется?

Является ли это каким-либо образом новой лучшей заменой print() , оправдывающей его выдающееся место завершения кода в Xcode?

Если нет, как я могу вернуться к поведению до Xcode 13 и предложить чрезвычайно распространенную print() функцию первой в списке?

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

1. Как вернуться к поведению до Xcode 13 и предложить чрезвычайно распространенную функцию print() первой в списке? Это очень раздражает, когда каждый раз видишь printcontent

Ответ №1:

Если ваше приложение включает UIApplicationSupportsPrintCommand ключ в свой Info.plist файл, пользователи могут печатать из вашего приложения, используя команду быстрого доступа-P, которая вызывает printContent(_:) . Вы также можете задать printContent(_:) в качестве действия другие элементы управления, связанные с печатью, такие как кнопка печати на панели инструментов.

 override func printContent(_ sender: Any?) {
    let info = UIPrintInfo.printInfo()
    info.outputType = .photo
    info.orientation = .portrait
    info.jobName = modelItem.title
    
    let printInteractionController = UIPrintInteractionController()
    printInteractionController.printInfo = info
    printInteractionController.printingItem = modelItem.image
    
    let completionHandler: UIPrintInteractionController.CompletionHandler = {
        (controller: UIPrintInteractionController, completed: Bool, error: Error?) in
        if let error = error {
            Logger().error("Print failed due to an error: (error.localizedDescription)")
        }
    }
    
    if traitCollection.userInterfaceIdiom == .pad {
        if let printButton = navigationItem.rightBarButtonItem {
            printInteractionController.present(from: printButton, animated: true, completionHandler: completionHandler)
        }
    } else {
        printInteractionController.present(animated: true, completionHandler: completionHandler)
    }
}
 

Ссылка для разработчиков Apple