Открытие книги справки в средстве просмотра справки
В этой главе описываются, как использовать функции Справки Apple для загрузки содержания из книги справки в Средстве просмотра Справки. При обеспечении контекстуально чувствительной справки, или если у Вас есть книги справки в дополнение к Вашей книге справки первичного приложения, необходимо знать, как получить доступ книге справки с помощью Справки Apple API.
Когда пользователи выбирают элемент из Меню справки, нажимают кнопку справки или выбирают справку из контекстного меню, Ваше приложение должно вывести на экран подходящее содержание книги справки в Средстве просмотра Справки. Для открытия книги справки в Средстве просмотра Справки используйте один из следующих NSHelpManager
методы:
openHelpAnchor:inBook:
открывает расположение в Вашей книге справки, идентифицированной привязкой.findString:inBook:
ищет Вашу книгу справки срок или фразу.
NSHelpManager
методы полностью документируются в Ссылку класса NSHelpManager.
Отображение расположения привязки
При указании расположений привязки в книге справки, как описано в Индексации Книги Справки, можно использовать функцию Справки Apple AHLookupAnchor
или NSHelpManager
метод openHelpAnchor:inBook:
найти и вывести на экран содержание справки именем привязки. AHLookupAnchor
и openHelpAnchor:inBook:
позвольте Вам искать определенную тему справки, не зная путь к странице, что это идет. При реализации контекстуально чувствительной справки можно загрузить ее привязкой, не имея необходимость отслеживать путь к каждой странице справки, к которой можно получить доступ.
Если имя привязки появляется несколько раз в Вашей книге справки, Средство просмотра Справки выводит на экран все содержание, связанное с той привязкой в Вашей книге справки в таблице результатов поиска. Использовать AHLookupAnchor
или openHelpAnchor:inBook:
, необходимо индексировать книгу справки с включенной индексацией привязки.
Перечисление 4-1 показывает использующую функцию AHLookupAnchor
найти и вывести на экран текст связались с привязкой к книге справки.
Перечисление 4-1 , Выводящее на экран расположение привязки
OSStatus MyGotoHelpAnchor( CFStringRef anchorName) |
{ |
CFBundleRef myApplicationBundle = NULL; |
CFTypeRef myBookName = NULL; |
OSStatus err = noErr; |
myApplicationBundle = CFBundleGetMainBundle();// 1 |
if (myApplicationBundle == NULL) {err = fnfErr; goto bail;} |
myBookName = CFBundleGetValueForInfoDictionaryKey(// 2 |
myApplicationBundle, |
CFSTR("CFBundleHelpBookName")); |
if (myBookName == NULL) {err = fnfErr; goto bail;} |
if (CFGetTypeID(myBookName) != CFStringGetTypeID()) {// 3 |
err = paramErr; |
} |
if (err == noErr) err = AHLookupAnchor (myBookName, anchorName);// 4 |
return err; |
Bail: |
return err; |
} |
Вот то, что делает функция в Перечислении 4-1:
Вызывает Базовую функцию Основы
CFBundleGetMainBundle
получать ссылку на основной пакет приложения.Вызывает Базовую функцию Основы
CFBundleGetValueForInfoDictionaryKey
найти имя книги справки приложения. При регистрации книги справки Вы храните свое имя книги справки вInfo.plist
файл с ключомCFBundleHelpBookName
. Вместо твердого кода Ваше название книги справки — который может измениться, поскольку содержание книги справки обновляется — в Вашем приложении, используйте Базовые функции Основы для получения названия книги справки от файла списка свойств.Чеки, которые значение возвратило на шаге 2, имели тип CFString.
Вызывает функцию Справки Apple
AHLookupAnchor
искать привязку в книге справки приложения.
Вот пример того, как Вы могли вызвать MyGotoHelpAnchor
функция описана в Перечислении 4-1:
err = MyGotoHelpAnchor(CFSTR("surfing")); |
Поиск книги справки
Справка Apple также предлагает способ для Вас отправить Средству просмотра Справки поисковый запрос для выполнения на книге справки. Используя AHSearch
функционируйте или findString:inBook:
метод, можно искать книгу справки срок или фразу. Например, если Вы реализуете контекстуально чувствительную справку для элемента пользовательского интерфейса, на который ссылаются в многочисленных страницах справки, можно вызвать findString:inBook:
найти и вывести на экран те страницы в таблице результатов поиска. Перечисление 4-2 показывает функцию, ищущую Вашу книгу справки критерий поиска или запрос с помощью AHSearch
функция.
Перечисление 4-2 функция, ищущая Вашу книгу справки
OSStatus MySearchHelpBook(CFStringRef theQuery) |
{ |
CFBundleRef myApplicationBundle = NULL; |
CFStringRef myBookName = NULL; |
OSStatus err = noErr; |
myApplicationBundle = CFBundleGetMainBundle();// 1 |
if (myApplicationBundle != NULL) { |
myBookName = CFBundleGetValueForInfoDictionaryKey(// 2 |
myApplicationBundle, |
CFSTR("CFBundleHelpBookName")); |
} else err = fnfErr; |
if (myBookName != NULL) { |
err = AHSearch(myBookName, theQuery);// 3 |
} else err = fnfErr; |
return err; |
} |
Вот то, что делает функция в Перечислении 4-2:
Вызовы
CFBundleGetMainBundle
получать ссылку на основной пакет приложения.Вызовы
CFBundleGetValueForInfoDictionaryKey
получать название книги справки связалось с комплектом приложений.Вызовы
AHSearch
искать книгу справки строку передалоMySearchHelpBook
вtheQuery
параметр.
Вот пример того, как Вы могли вызвать функцию, которая, как показывают в Перечислении 4-2, искала Вашу книгу справки информацию о печати. Можно использовать фразу для запроса, такого как “печать документ”, или можно искать срок, такой как «печать».
err = SearchHelpBook(CFSTR("print a document")); |
err = SearchHelpBook(CFSTR("print")); |
Загрузка страницы книги справки
Функция Справки Apple AHGotoPage
позволяет Вам открывать страницу книги справки в известном расположении и отображать его в Средстве просмотра Справки. Если Вы знаете путь к информации, Вы хотите вывести на экран, или если Вы просто хотите открыть свою книгу справки для ее титульного листа, можно использовать AHGotoPage
.
Вы указываете расположение страницы с помощью комбинации относительного пути и названия книги справки. Относительные пути должны быть указаны относительно папки книги справки. Кроме того, можно указать привязку в данной странице справки; при указании привязки Средство просмотра Справки прокручивает непосредственно к расположению той привязки на странице справки прежде, чем вывести на экран страницу.
Таблица 4-1 показывает параметры, которым можно передать AHGotoPage
и что Средство просмотра Справки выводит на экран в ответ.
Параметры обеспечили для AHGotoPage | Результаты |
---|---|
Название книги справки | Средство просмотра справки открывает книгу справки для своего титульного листа |
Название книги справки, относительный путь | Средство просмотра справки открывает страницу в данном пути в книге справки |
Название книги справки, относительный путь, имя привязки | Средство просмотра справки открывает страницу в пути и прокручивает к разделу, идентифицированному привязкой |
Функция, показанная в Перечислении 4-3, берет путь и имя привязки как параметры и вызовы AHGotoPage
для открытия справки бронируют страницу в Средстве просмотра Справки.
Перечисление 4-3 функция, загружающая страницу книги справки
OSStatus MyGotoHelpPage (CFStringRef pagePath, CFStringRef anchorName) |
{ |
CFBundleRef myApplicationBundle = NULL; |
CFStringRef myBookName = NULL; |
OSStatus err = noErr; |
myApplicationBundle = CFBundleGetMainBundle();// 1 |
if (myApplicationBundle == NULL) {err = fnfErr; goto bail;}// 2 |
myBookName = CFBundleGetValueForInfoDictionaryKey(// 3 |
myApplicationBundle, |
CFSTR("CFBundleHelpBookName")); |
if (myBookName == NULL) {err = fnfErr; goto bail;} |
if (CFGetTypeID(myBookName) != CFStringGetTypeID()) {// 4 |
err = paramErr; |
} |
if (err == noErr) err = AHGotoPage (myBookName, pagePath, anchorName);// 5 |
return err; |
} |
Вот то, что делает код:
Вызывает Базовую функцию Основы
CFBundleGetMainBundle
получать пакет приложения.Если
CFBundleGetMainBundle
не может найти основной пакет приложения, возвращает ошибку при указании, что не был найден файл.Вызывает Базовую функцию Основы
CFBundleGetValueForInfoDictionaryKey
получать имя книги справки связалось с основным пакетом приложения.Чеки, которые значение возвратило на шаге 3, имеют тип CFString. Базовая функция Основы
CFGetTypeID
возвращается идентификатор типа значения возвратился на шаге 3; функцияCFStringGetTypeID
возвращает идентификатор типа CFString. Если идентификаторы типов не соответствуют,MyGotoHelpPage
возвращает ошибку параметра.Вызывает функцию Справки Apple
AHGotoPage
открыть книгу справки приложения для страницы и привязки передало в как параметрыMyGotoHelpPage
функция. ЕслиpagePath
иanchorName
параметры - обаNULL
,AHGotoPage
открывает книгу справки приложения для ее титульного листа.
Вот три примера того, как Вы могли вызвать MyGotoHelpPage
функция описана в Перечислении 4-3:
err = MyGotoHelpPage(CFSTR("pages/howto.html"), CFSTR("surfing")); |
err = MyGotoHelpPage(CFSTR("pages/howto.html"), NULL); |
err = MyGotoHelpPage(NULL, NULL); |