(前回)Cocoaの日々: Safari用独自プラグインを作る(15) - ツールバーを追加する #4
前回ツールバーへ画像を表示させたが押す事ができなかった。理由は単純で NSImageView を貼付けただけだったから。ボタンのような動きをさせるには NSButton を貼付ける必要がある。今回は NSButton を貼付けてみよう。
Safari のツールバーへ NSButton を貼付ける
前回までのコードを少し書き変える。こんな感じ。
NSBundle* bundle = [NSBundle bundleForClass:[SXSafariToolbarSwizzler class]];
NSString* path = [bundle pathForResource:@"toolbar_icon" ofType:@"tiff"];
NSImage* image = [[[NSImage alloc] initWithContentsOfFile:path] autorelease];
NSButton* button = [[[NSButton alloc] initWithFrame:NSMakeRect(0, 0, 28, 23)] autorelease];
[button setBezelStyle:NSTexturedRoundedBezelStyle];
[button setTarget:_shared_instance];
[button setAction:@selector(takeScreenshot:)];
[button setImage:image];
item = [[[NSToolbarItem alloc] initWithItemIdentifier:itemIdentifier] autorelease];
[item setView:button];
[item setEnabled:YES];
Interface Builder で NSButton の表示スタイルを調べたところ NSTexturedRoundedBezelStyle が Safari のボタンに近かったので使ってみる。サイズは Safari に付属していたボタン画像のそれを指定してみた。ボタンが押された場合の処理は、ボタン側のアクション/ターゲットを使う必要がある。NSToolbarItem に設定してもそちらは使われない。画像は最初に用意した背景がないものを使う。
さて実行してみよう。
出た。
ボタンも押せるし、takeScreenshot: も呼び出されている(現状はログへメッセージを出すだけ)。
わかってしまえば簡単だった。前回用意した画像が無駄になってしまったが。。