Разбивка на страницы Назад и вперед
Объект веб-представления использует объект Ссылки класса WebBackForwardList вести список посещаемых страниц, используемых, чтобы разбить на страницы назад и передать новой странице. Веб-представление обеспечивает методы для обработки действия продвижения или назад в этом списке; поэтому, можно легко добавить кнопки Back и Forward к приложению.
Включение и отключение Обратно-прямого списка
По умолчанию каждый объект веб-представления поддерживает свой собственный прямой спиной объект списка. Существуют немного наверху в ведении этого списка. Если Вы не хотите использовать эту функцию, отправьте a setMaintainsBackForwardList:
обменивайтесь сообщениями к своему объекту веб-представления как в:
[webView setMaintainsBackForwardList:NO]; |
Иначе, элементы истории, инкапсулирующие посещаемую информацию о странице, автоматически добавлены и удалены из прямого спиной списка, поскольку веб-страницы загружены и выведены на экран в веб-представлении. Если Вы ведете прямой спиной список в своем объекте веб-представления, то необходимо добавить некоторые кнопки к пользовательскому интерфейсу так, чтобы пользователи могли использовать эту функцию.
Добавление Обратных и прямых кнопок
Вы не должны писать одну строку кода для реализации кнопок Back и Forward в приложении. Выполните эти шаги для добавления этих кнопок:
Используя Интерфейсного Разработчика, добавьте кнопку Back и Forward к своему окну.
Используя Интерфейсного Разработчика, подключите кнопки Back и Forward к объекту веб-представления путем выбора, соответственно,
goBack:
иgoForward:
действия.Сборка и запущенный Ваше приложение.
При запуске приложения соединитесь с URL, пройдите по нескольким ссылкам (для генерации некоторых элементов истории в прямом спиной списке), и затем нажмите кнопки Back и Forward. WebKit ведет прямой спиной список для Вас, и методы действия инициируют новые запросы страницы.
Установка кэша страницы
Можно использовать прямые спиной списки для поддержания кэша страницы также. Поскольку страницы в кэше представляются быстро, использование этой функции улучшает производительность прямых спиной методов действия. Можно включить или выключить эту функцию путем установки размера кэша с помощью WebBackForwardList setPageCacheSize:
метод. Если Вы устанавливаете размер кэша страницы в 0
, кэш страницы отключен; иначе, размер кэша ограничивается числом страниц, которые Вы указываете. Размер кэша страницы по умолчанию может варьироваться в зависимости от конфигурации Вашего компьютера. Используйте pageCacheSize
метод для получения текущей установки.
Установка способности
Можно также ограничить способность самого прямого спиной списка с помощью setCapacity:
метод. Установка способности влияет только на число элементов истории, позволенных в прямом спиной списке. Это не влияет на кэш страницы. Используйте capacity
метод для получения текущей установки.
Текущий элемент
При управлении прямым спиной списком непосредственно необходимо знать, как он работает. Прямой спиной список походит на массив, который может расшириться и в отрицательных и в положительных направлениях. Элементы истории обычно вставляются в порядок, в котором их посещают. Элементы имеют индексы, которые являются относительно текущего элемента. Текущий элемент всегда в индексе 0
, предыдущий элемент в индексе -1
, следующий элемент в индексе 1
, и т.д.
При управлении содержанием прямого спиной списка знать, что некоторые методы изменяют текущий элемент и поэтому индексы всех других элементов. goBack
и goForward
методы, их эквивалентные методы действия, и goToItem:
метод все изменение текущий элемент. Все другие методы доступа WebBackForwardList не производят текущий элемент.
Управление состоянием
Если нет никаких элементов истории, или нет никаких предыдущих элементов или после текущего элемента, то спина или передает действие, ничего не делает. Поэтому Вы могли бы хотеть отследить состояние прямого спиной списка и включить или отключить кнопки Back и Forward соответственно.
Можно сделать это путем реализации webView:didFinishLoadForFrame:
метод делегата проверить состояние прямого спиной списка. Отправка canGoBack
и canGoForward
к веб-представлению возражают возвратам YES
если можно войти в то направление. Поэтому Вы могли бы реализовать webView:didFinishLoadForFrame:
метод следующим образом, где backButton
и forwardButton
Ваши выходы кнопки:
- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame |
{ |
// Only report feedback for the main frame. |
if (frame == [sender mainFrame]){ |
[backButton setEnabled:[sender canGoBack]]; |
[forwardButton setEnabled:[sender canGoForward]]; |
} |
} |