Отговорите от @pointum и @zhoudu не се поддържат в приложенията на Mac Catalyst, така че ето опция за това.
Според този отговор, полето за търсене се добавя от macOS. Потърсих plist key, за да го деактивирате, но не намерих нищо. Тогава започнах да се забърквам с метода buildMenuWithBuilder
. Трябваше да променя моя AppDelegate
клас, за да бъде подклас на UIResponder
вместо NSObject
и след това можех да отменя този метод в моя AppDelegate
. След като това беше стартирано, бяха необходими няколко опита, за да се направи нещо полезно с него.
Опит 1: Опитах се да премахна първия елемент от менюто Помощ, което беше полето за търсене.
- (void)buildMenuWithBuilder:(id<UIMenuBuilder>)builder {
[super buildMenuWithBuilder:builder];
[builder replaceChildrenOfMenuForIdentifier:UIMenuHelp fromChildrenBlock:^(NSArray<UIMenuElement *> *currentChildren) {
NSMutableArray *newChildren = [NSMutableArray arrayWithArray:currentChildren];
[newChildren removeObjectAtIndex:0 withSafeChecks:TRUE];
return newChildren;
}];
}
Но полето за търсене се добавя след изпълнението на този метод, така че този код премахна само елемента „[име на приложението] Помощ“, който исках да запазя.
Опит 2: Опитах да взема елемента от менюто „[име на приложението] Помощ“ от менюто по подразбиране, след това да го добавя към ново меню и да заменя помощното меню по подразбиране с това:
- (void)buildMenuWithBuilder:(id<UIMenuBuilder>)builder {
[super buildMenuWithBuilder:builder];
UIMenuElement *helpItem = [[builder menuForIdentifier:UIMenuHelp].children objectAtIndex:0];
UIMenu *helpMenu = [UIMenu menuWithTitle:@"Help " children:[NSArray arrayWithObject:helpItem]];
[builder replaceMenuForIdentifier:UIMenuHelp withMenu:helpMenu];
}
Но macOS не се подвежда толкова лесно; той все още идентифицира това като помощно меню и добави полето за търсене. Дори когато промених името на менюто на "Помощ", както е показано тук, получих същия резултат.
Опит 3: Накрая трябваше да направя ново помощно действие, да го добавя към ново помощно меню И да наименувам помощното меню с допълнителен интервал. Само когато направих и трите неща, macOS спря да добавя полето за търсене:
- (void)buildMenuWithBuilder:(id<UIMenuBuilder>)builder {
[super buildMenuWithBuilder:builder];
UIAction *helpAction = [UIAction actionWithTitle:@"[app name] Help" image:nil identifier:@"simpleHelp" handler:^(__kindof UIAction *action) {
// my help code
}];
UIMenu *helpMenu = [UIMenu menuWithTitle:@"Help " children:[NSArray arrayWithObject:helpAction]];
[builder replaceMenuForIdentifier:UIMenuHelp withMenu:helpMenu];
}
person
arlomedia
schedule
10.03.2020