Я пытаюсь создать справочную книгу Apple для своего приложения для macOS, которое я готов выпустить. Однако я пытаюсь заставить якоря работать в моем HTML. По определению Apple:
«Якоря позволяют однозначно определять темы в справочной книге. Когда пользователь переходит по ссылке на якорь, Help Viewer загружает страницу, содержащую якорь. ... Якоря также можно использовать для загрузки привязанной страницы из приложения, вызов метода NSHelpManager openHelpAnchor: inBook: ... "
Пример от Apple: <a name="ArrivalTimesUsingStopID"></a>
В моем Apple у меня есть NSAlert, в котором есть следующий код для отображения кнопки справки, чтобы при нажатии на нее открывалась указанная строка привязки.
alert.showsHelp = true
alert.helpAnchor = NSHelpManager.AnchorName(stringLiteral: "ArrivalTimesUsingStopID")
При запуске кода отображается кнопка справки, и справка Mac открывается, но с сообщением об ошибке, что указанное содержимое не может быть найдено. Не уверен, почему якоря не работают, потому что я могу получить доступ к Справочнику, если перейду в меню «Справка» и открою его оттуда.
Кроме того, в документе Apple говорится:
Классы NSAlert, SFChooseIdentityPanel, SFCertificatePanel предоставляют кнопки справки для диалогов. Чтобы отобразить такую кнопку справки и связать ее с привязкой в книге справки, используйте методы setShowsHelp: и setHelpAnchor: в этих классах.
и документация по этим свойствам в состоянии NSAlert
:
-setShowsHelp: YES добавляет кнопку справки на панель предупреждений. Когда кнопка помощи нажата, сначала консультируется с делегатом. Если делегат не реализует alertShowHelp: или возвращает NO, то - [NSHelpManager openHelpAnchor: inBook:] вызывается с нулевой книгой и привязкой, заданной -setHelpAnchor:, если есть. Исключение будет вызвано, если делегат вернет NO и не установлена привязка справки.
... так что я знаю, что использую эти два правильно.
Я также понимаю, что мне нужно создавать файл .helpindex каждый раз, когда я обновляю HTML-документы моей справочной книги Apple. Я использую Help Indexer.app, который находится в дополнительных инструментах Xcode на сайте developer.apple.com. Я убеждаюсь, что:
- У меня есть опция для индексации всех якорей.
- Любая HTML-страница с привязкой имеет
<meta name="ROBOTS" content="ANCHORS">
в заголовке, поэтому привязки индексируются. - Plist-файл моей справочной книги Apple правильно указывает на файл .helpindex, созданный «Help Indexer.app».
Но даже при всем этом я не могу заставить его открыть справочную книгу Apple с правильной привязкой или даже титульную страницу моей справочной книги Apple.
от корки до корки несколько раз, и я не могу найти решение или где-либо в Интернете.
Я также пробовал открыть его вручную, но он просто открывает ту же ошибку, говоря, что указанный контент не может быть найден с помощью следующего кода:
let bookName = Bundle.main.object(forInfoDictionaryKey: "CFBundleHelpBookName") as! String
NSHelpManager.shared.openHelpAnchor("ArrivalTimesUsingStopID", inBook: bookName)
Использование nil
для параметра inBook тоже не работает:
NSHelpManager.shared.openHelpAnchor("ArrivalTimesUsingStopID", inBook: nil)
Любые идеи?