Я читал статью, в которой рассказывается о Core Services, и решил использовать одну из них. Я импортирую Core Services и добавляю библиотеку в XCode, но она не работает.
Пример кода:
import Foundation
import CoreServices.DictionaryServices
func define(_ word: String) -> String? {
let nsstring = word as NSString
let cfrange = CFRange(location: 0, length: nsstring.length)
guard let definition = DCSCopyTextDefinition(nil, nsstring, cfrange) else {
return nil
}
return String(definition.takeUnretainedValue())
}
define("apple") // "apple | ˈapəl | noun 1 the round fruit of a tree..."
Выдает ошибку «нет такого модуля» при импорте. Я также смотрю на документацию Apple , но нет объяснения, как ее реализовать и использовать.
Решение:
Благодаря людям, которые ответили ниже на мой вопрос, я провел небольшое исследование и нашел решение. По-видимому, я могу использовать словарь iOS, позвонив по номеру UIReferenceLibraryViewController
, но в документации Apple говорится, что мы не должны использовать это приложение для словарного приложения. Очевидно, что недостаточно создать приложение-словарь, поскольку оно использует собственный ViewController
и не настраивается.
Вот пример рабочего кода:
let dic = UIReferenceLibraryViewController(term: textLabelOutlet.text as! String)
dic.modalPresentationStyle = .popover // add this
let popover = dic.popoverPresentationController
popover?.sourceView = view
popover?.sourceRect = CGRect(x: 32, y: 32, width: 64, height: 64)
present(dic, animated: true)
Источник: UIReferenceLibraryViewController не может быть представлен как всплывающее окно (всегда покрывает полный экран)