1

OS X の複数のバージョンで利用できるアプリケーションがありますNSToolbarItem。特定の OS バージョンのユーザーだけが利用できるようにする最善の方法は何ですか? 利用できない場合は、無効にするだけでなく、完全に非表示にする必要があります。

簡単にするために、プログラムでこの (下の) メニューからツールバー項目を削除するにはどうすればよいですか?

ツールバーのカスタマイズ

編集:toolbarAllowedItemIdentifiers:次のようにデリゲートでオーバーライドしようとしました:

- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar {
    NSLog(@"Toolbar requesting allowed items.");
    NSMutableArray *array = [NSMutableArray array];
    [array addObject:@"TPUpToolbarItem"];
    [array addObject:@"TPDownToolbarItem"];
    [array addObject:@"TPResetToolbarItem"];
    [array addObject:@"TPSpeedToolbarItem"];
    [array addObject:@"TPGroupToolbarItem"];
    [array addObject:@"TPBackgroundToolbarItem"];
    [array addObject:NSToolbarShowFontsItemIdentifier];
    if (floor(NSAppKitVersionNumber) <= 1038) {
        NSLog(@"Below Lion, adding Fullscreen item.");
        [array addObject:@"TPFSToolbarItem"];
    }
    [array addObject:@"TPFlipHToolbarItem"];
    [array addObject:@"TPFlipVToolbarItem"];
    [array addObject:NSToolbarFlexibleSpaceItemIdentifier];
    [array addObject:NSToolbarSpaceItemIdentifier];
    [array addObject:NSToolbarSeparatorItemIdentifier];
    [array addObject:NSToolbarShowColorsItemIdentifier];
    [array addObject:NSToolbarPrintItemIdentifier];
    return array;
}

他のすべてのツールバー項目は正しい順序で表示されますが、フルスクリーン項目は最後にあり、まだそこにあります。

前もって感謝します。

4

3 に答える 3

1

ゲシュタルトを使用します。

于 2011-07-17T20:08:31.103 に答える
0

@NSGodはほとんどそこにいました。彼のコードの残りの部分は機能しますが、IB は私のコードをオーバーライドしてフルスクリーン ボタンを追加しているようです。ツールバー項目をツールバーの外に移動し、次のNSToolbarDelegateメソッドを追加して手動で をポイントする必要がありました: ( updownなどはIBOutlets)

- (NSToolbarItem *)toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag {
    if ([itemIdentifier isEqualToString:@"TPUpToolbarItem"]) {
        return up;
    }
    if ([itemIdentifier isEqualToString:@"TPDownToolbarItem"]) {
        return down;
    }

    if ([itemIdentifier isEqualToString:@"TPResetToolbarItem"]) {
        return reset;
    }
    if ([itemIdentifier isEqualToString:NSToolbarShowColorsItemIdentifier]) {
        return colors;
    }
    if ([itemIdentifier isEqualToString:NSToolbarShowFontsItemIdentifier]) {
        return fonts;
    }
    if ([itemIdentifier isEqualToString:NSToolbarPrintItemIdentifier]) {
        return print;
    }
    if ([itemIdentifier isEqualToString:@"TPSpeedToolbarItem"]) {
        return speed;
    }
    if ([itemIdentifier isEqualToString:@"TPBackgroundToolbarItem"]) {
        return background;
    }
    if ([itemIdentifier isEqualToString:@"TPGroupToolbarItem"]) {
        return group;
    }
    if ([itemIdentifier isEqualToString:NSToolbarFlexibleSpaceItemIdentifier]) {
        return flex;
    }
    if ([itemIdentifier isEqualToString:NSToolbarSpaceItemIdentifier]) {
        return space;
    }
    if ([itemIdentifier isEqualToString:@"TPFlipHToolbarItem"]) {
        return flipH;
    }
    if ([itemIdentifier isEqualToString:@"TPFlipVToolbarItem"]) {
        return flipV;
    }
    if ([itemIdentifier isEqualToString:NSToolbarSeparatorItemIdentifier]) {
        return sep;
    }
    if ([itemIdentifier isEqualToString:@"TPFSToolbarItem"]) {
        return fsItem;
    }
}
于 2011-07-17T22:49:05.907 に答える