ページ

2009年4月7日火曜日

WebKit検証(2) - プログレスバー

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

プログレスバーを付けてみる。今回もバインディングは使わずに実装する。

まず InterfaceBuilderで NSProgressIndicator を貼り付ける。


AppController.h へアウトレットを用意し InterfaceBuilderで接続する。

IBOutlet NSProgressIndicator* _progress;



ページの読み込み状況は WebView からの通知で知ることができる。

WebViewProgressEstimateChangedNotification
WebViewProgressFinishedNotification
WebViewProgressStartedNotification

通知を受け取るために #awakeFromNib内で、observerとして AppController自身を NSNotificationCenterへ登録する。
AppController.m
- (void)awakeFromNib
{
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
selector:@selector(processNotification:)
name:WebViewProgressStartedNotification
object:nil];
[nc addObserver:self
selector:@selector(processNotification:)
name:WebViewProgressEstimateChangedNotification
object:nil];
[nc addObserver:self
selector:@selector(processNotification:)
name:WebViewProgressFinishedNotification
object:nil];
}


通知が来たら #processNotification: メッセージが投げられるので、メソッド内でプログレスバーの値を更新する。ページ読み込み状況は WebView#estimatedProgress で取得できる。この戻り値は 0.0〜1.0 の範囲を取る(1.0=>100%完了)。
- (void)processNotification:(NSNotification *)notification
{
WebView* wv = [notification object];
[_progress setDoubleValue:[wv estimatedProgress]];
}


実行してみよう。


出た。