私はNSTouchBar
の 3 つのレベルでシンプルにしようとしているNSPopoverTouchBarItem
ので、基本的には次のようになります。
2番目を開くNSTouchbar
3NSButton
と1
のメインがありますNSPopoverTouchBarItem
NSTouchbar
3番目を開くNSTouchbar
2NSButton
と1の2番目NSPopoverTouchBarItem
NSTouchbar
問題は、3番目を開こうとするとNSTouchbar
、2番目が却下されたように見え、3番目NSTouchbar
が開かないことがあります。
また、3 つ目を開いたら、2 つ目ではNSTouchbar
なく1 つ目に移動します。NSTouchbar
これがコードで、シンプルで動作するはずです(私はXcode TouchBar Simulatorを使用しています)
#import "Window.h"
static NSTouchBarCustomizationIdentifier TouchBarCustomizationIdentifier = @"TouchBarCustomizationIdentifier";
static NSTouchBarItemIdentifier NSTouchBarItemIdentifier1 = @"NSTouchBarItemIdentifier1";
static NSTouchBarItemIdentifier NSTouchBarItemIdentifier2 = @"NSTouchBarItemIdentifier2";
static NSTouchBarItemIdentifier NSTouchBarItemIdentifier3 = @"NSTouchBarItemIdentifier3";
static NSTouchBarItemIdentifier NSTouchBarItemIdentifier4 = @"NSTouchBarItemIdentifier4";
static NSTouchBarItemIdentifier NSTouchBarItemIdentifier4_1 = @"NSTouchBarItemIdentifier4_1";
static NSTouchBarItemIdentifier NSTouchBarItemIdentifier4_2 = @"NSTouchBarItemIdentifier4_2";
static NSTouchBarItemIdentifier NSTouchBarItemIdentifier4_3 = @"NSTouchBarItemIdentifier4_3";
static NSTouchBarItemIdentifier NSTouchBarItemIdentifier4_3_1 = @"NSTouchBarItemIdentifier4_3_1";
static NSTouchBarItemIdentifier NSTouchBarItemIdentifier4_3_2 = @"NSTouchBarItemIdentifier4_3_2";
@implementation Window
- (NSTouchBar*) makeTouchBar {
_touchBar1 = [[NSTouchBar alloc] init];
[_touchBar1 setDelegate:self];
[_touchBar1 setCustomizationIdentifier:TouchBarCustomizationIdentifier];
[_touchBar1 setDefaultItemIdentifiers:@[
NSTouchBarItemIdentifier1,
NSTouchBarItemIdentifier2,
NSTouchBarItemIdentifier3,
NSTouchBarItemIdentifier4,
]
];
[_touchBar1 setCustomizationRequiredItemIdentifiers:@[
NSTouchBarItemIdentifier1,
NSTouchBarItemIdentifier2,
NSTouchBarItemIdentifier3,
NSTouchBarItemIdentifier4,
]
];
return _touchBar1;
}
- (nullable NSTouchBarItem *)touchBar:(NSTouchBar *)touchBar makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier {
if ([identifier isEqual:NSTouchBarItemIdentifier1]) {
NSCustomTouchBarItem *customTouchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
[customTouchBarItem setView:[NSButton buttonWithTitle:@"IS TOUCH 1" target:self action:nil]];
return customTouchBarItem;
} else if ([identifier isEqual:NSTouchBarItemIdentifier2]) {
NSCustomTouchBarItem *customTouchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
[customTouchBarItem setView:[NSButton buttonWithTitle:@"IS TOUCH1" target:self action:nil]];
return customTouchBarItem;
} else if ([identifier isEqual:NSTouchBarItemIdentifier3]) {
NSCustomTouchBarItem *customTouchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
[customTouchBarItem setView:[NSButton buttonWithTitle:@"IS TOUCH1" target:self action:nil]];
return customTouchBarItem;
} else if ([identifier isEqual:NSTouchBarItemIdentifier4]) {
NSPopoverTouchBarItem *customTouchBarItem = [[NSPopoverTouchBarItem alloc] initWithIdentifier:identifier];
[customTouchBarItem setCollapsedRepresentationLabel:@"OPEN TOUCH 2"];
_touchBar2 = [[NSTouchBar alloc] init];
[_touchBar2 setDelegate:self];
[_touchBar2 setCustomizationIdentifier:TouchBarCustomizationIdentifier];
[_touchBar2 setDefaultItemIdentifiers:@[
NSTouchBarItemIdentifier4_1,
NSTouchBarItemIdentifier4_2,
NSTouchBarItemIdentifier4_3,
]
];
[_touchBar2 setCustomizationRequiredItemIdentifiers:@[
NSTouchBarItemIdentifier4_1,
NSTouchBarItemIdentifier4_2,
NSTouchBarItemIdentifier4_3,
]
];
[customTouchBarItem setPopoverTouchBar:_touchBar2];
return customTouchBarItem;
} else if ([identifier isEqual:NSTouchBarItemIdentifier4_1]) {
NSCustomTouchBarItem *customTouchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
[customTouchBarItem setView:[NSButton buttonWithTitle:@"IS TOUCH 2" target:self action:nil]];
return customTouchBarItem;
} else if ([identifier isEqual:NSTouchBarItemIdentifier4_2]) {
NSCustomTouchBarItem *customTouchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
[customTouchBarItem setView:[NSButton buttonWithTitle:@"IS TOUCH 2" target:self action:nil]];
return customTouchBarItem;
} else if ([identifier isEqual:NSTouchBarItemIdentifier4_3]) {
NSPopoverTouchBarItem *customTouchBarItem = [[NSPopoverTouchBarItem alloc] initWithIdentifier:identifier];
[customTouchBarItem setCollapsedRepresentationLabel:@"OPEN TOUCH 3"];
_touchBar3 = [[NSTouchBar alloc] init];
[_touchBar3 setDelegate:self];
[_touchBar3 setCustomizationIdentifier:TouchBarCustomizationIdentifier];
[_touchBar3 setDefaultItemIdentifiers:@[
NSTouchBarItemIdentifier4_3_1,
NSTouchBarItemIdentifier4_3_2,
]
];
[_touchBar3 setCustomizationRequiredItemIdentifiers:@[
NSTouchBarItemIdentifier4_3_1,
NSTouchBarItemIdentifier4_3_2,
]
];
[customTouchBarItem setPopoverTouchBar:_touchBar3];
return customTouchBarItem;
} else if ([identifier isEqual:NSTouchBarItemIdentifier4_3_1]) {
NSCustomTouchBarItem *customTouchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
[customTouchBarItem setView:[NSButton buttonWithTitle:@"IS TOUCH 3" target:self action:nil]];
return customTouchBarItem;
} else if ([identifier isEqual:NSTouchBarItemIdentifier4_3_2]) {
NSCustomTouchBarItem *customTouchBarItem = [[NSCustomTouchBarItem alloc] initWithIdentifier:identifier];
[customTouchBarItem setView:[NSButton buttonWithTitle:@"IS TOUCH 3" target:self action:nil]];
return customTouchBarItem;
}
return nil;
}
@end