#xcode #nsobject #code-completion #uiresponder
Вопрос:
Используя Xcode 13, введите любую подстроку из print
предложенных printContent()
сначала в списке завершения кода Xcode над общими print()
функциями Swift.
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)
}
}