【问题标题】:Conditional right click items in macos - findermacOS中的条件右键单击项目 - finder
【发布时间】:2013-05-22 16:36:09
【问题描述】:

我正在尝试使用带有 Finder Inject 的 NSMenuItem 工具添加右键单击项目。我需要根据单击的文件/文件夹的路径更改项目。但是看起来,使用finder注入,菜单项是在右键单击之前生成的。

换句话说,在检查右键单击文件的路径的条件下,我无法编辑 MenuItems。有什么想法吗?

我试过了

-(NSMenuItem *)createMenuItem {     
    // I need to catch the path of the clicked item here.    
    NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"ITEM TITLE" action:@selector(myMethodClicked:) keyEquivalent:@""];
    [menuItem setTarget:self];     
    return menuItem;
}

我可以通过下面的方法获取点击文件的路径,见行:

NSArray *selectedFiles = [[ILFinderMenu sharedInstance] selectedItems];

但在添加 menuItems 之前我需要它。整个函数也在下面添加。

- (void)myMethodClicked:(id)sender {
    NSMenuItem *item = (NSMenuItem *)sender;
    NSMenu *submenu = [item submenu];
    
    NSArray *selectedFiles = [[ILFinderMenu sharedInstance] selectedItems];
    NSString *selectedFilePath = [selectedFiles objectAtIndex:0];
    NSString *appPath = @"/eclipse/";
            
    if ([selectedFilePath rangeOfString:appPath].location != NSNotFound) {
        // disable backup
        NSMenuItem *backupMenuItem = [submenu itemAtIndex:1];
        [backupMenuItem setEnabled:NO];
        
        // enable share
        NSMenuItem *shareItem = [submenu itemAtIndex:0];
        [shareItem setEnabled:YES];
    } else {            
        // disable share
        NSMenuItem *backupMenuItem = [submenu itemAtIndex:0];
        [backupMenuItem setEnabled:NO];
        
        // enable backup
        NSMenuItem *shareItem = [submenu itemAtIndex:1];
        [shareItem setEnabled:YES];
    }
}

【问题讨论】:

    标签: xcode macos finder


    【解决方案1】:

    更好的方法是使用finder extensions。如果您需要更大的灵活性,您可以使用通知与主应用程序通信并动态更改右键菜单项。官方文档中有可以提供帮助的示例。 Here 是一个使用该方法添加自定义右键菜单项的应用程序。该页面有一个指向源的链接。

    【讨论】:

      【解决方案2】:

      您应该为MethodSwizzling 找到另一种方法。在生成菜单之前查找将被调用的方法。

      【讨论】:

      • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
      • 没有人会给你 MethodSwizzling 的方法名称。 OP 在查找器插件中覆盖了错误的方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多