Finder、Safari、Transmissionなどの素敵なテクスチャボタンをツールバーに再現しようとしています。まず、IBなどの「テクスチャボタン」をドラッグするだけから始めました。ユーザーがツールバーを「テキストのみ」モードに設定した場合を除いて、すべてが正常に機能します。次に彼がボタンをクリックすると、ツールバーはそれ自体で「アイコンとラベル」を有効にします。コードの問題ではないことを確認するために、ツールバーからすべてのコードとデリゲートを削除しました。
次に、念のため、新しいプロジェクトを作成し(コードはまったくありません)、NSButtonを含む1つのNSToolbarItemを含むNSToolbarを含むクリーンなNSWindowで問題を再現できます。
次のようなコードを介してNSButtonを追加します。
- (NSArray*)toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar {
return [NSArray arrayWithObject:@"myToolbarMenu"];
}
- (NSArray*)toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar {
return [self toolbarAllowedItemIdentifiers:toolbar];
}
- (NSToolbarItem*)toolbar:(NSToolbar*)toolbar
itemForItemIdentifier:(NSString*)str
willBeInsertedIntoToolbar:(BOOL)flag
{
if ([str isEqualToString:@"myToolbarItem"] == YES) {
NSToolbarItem* item = [[NSToolbarItem alloc] initWithItemIdentifier:str];
[item setView:[[NSButton alloc] init]];
[item setMinSize:NSMakeSize(50,50)];
[item setMaxSize:NSMakeSize(50,50)];
[item setLabel:@"Text"];
return [item autorelease];
}
return nil;
}
ただし、これにも同じ効果があります。「テキストのみのモード」でNSButtonを含むNSToolbarItemを押すと、ツールバー自体がそのモードを「アイコンとテキスト」に強制します。
どうすれば正しく動作させることができるのか、Safariなどの見栄えの良いツールバーアイテムを作成する代わりの方法があるのでしょうか。