Доступ к WebKit из приложений углерода
Для доступа к WebKit из приложения Углерода Вы используете Углерод WebKit API для создания веб-представления Углерода. Как только Вы добавили представление к окну, необходимо загрузить и вывести на экран содержание URL использование собственных классов Какао.
Перед использованием любых веб-представлений необходимо вызвать WebInitForCarbon
функция. Выполнение так инициализирует Какао, таким образом, можно получить доступ к WebKit из приложения Углерода.
Для создания веб-представления Вы просто вызываете HIWebViewCreate
функция. Эта функция возвращает ссылку HIView, и как таковой, можно использовать любую из стандартных функций манипулирования HIView на ней. Например, можно встроить веб-представление в другом окне или просмотреть, изменить размеры его и т.д.
Например, следующий фрагмент кода создает веб-представление и встраивает его в окно:
WindowRef window; |
HIViewRef webView, contentView; |
HIRect bounds; |
CFURLRef url; |
// Create your window here |
… |
// Get a URL here, as a CFURL |
… |
WebInitForCarbon(); // initialize WebKit |
HIWebViewCreate( &webView ); // create the web view |
// Now obtain the content view associated with the window |
HIViewFindByID( HIViewGetRoot( window ), kHIViewWindowContentID, |
&contentView ); |
// Set the bounds of the web view to be the same as the content view |
HIViewGetBounds( contentView, &bounds ); |
HIViewSetFrame( webView, &bounds ); |
// Embed the web view in the content view and make it visible |
HIViewAddSubview( contentView, webView ); |
HIViewSetVisible( webView, true ); |
// Make a call to load URL content */ |
LoadURL( webView, url ); |
Для управления содержанием веб-представления Вам нужен доступ к фактическому представлению Cocoa. Вы получаете ссылку на объект веб-представления Какао путем вызова HIWebViewGetWebView
функция. Можно тогда выполнить вызовы Objective C к WebKit с помощью того объекта. Функция в качестве примера LoadURL
показывает, как Вы могли сделать это:
static void LoadURL( HIViewRef inView, CFURLRef inURL ) |
{ |
WebView* nativeView; |
NSURLRequest* request; |
WebFrame* mainFrame; |
nativeView = HIWebViewGetWebView( inView ); // get the Cocoa view |
// Use Objective-C calls to load the actual content |
request = [NSURLRequest requestWithURL:(NSURL*)inURL]; |
mainFrame = [nativeView mainFrame]; |
[mainFrame loadRequest:request]; |
} |
См. WebKit C Ссылка для большего количества подробных данных об Углероде функции WebKit.