gpt4 book ai didi

cocoa - 尽管已设置操作,但单击分段时仍显示 NSSegmentedControl 菜单

转载 作者:行者123 更新时间:2023-12-03 16:06:50 25 4
gpt4 key购买 nike

我的 UI 上有一个带有 4 个按钮的 NSSegmentedControl。该控件连接到一个方法,该方法将根据单击的段调用不同的方法:

- (IBAction)performActionFromClick:(id)sender {
NSInteger selectedSegment = [sender selectedSegment];
NSInteger clickedSegmentTag = [[sender cell] tagForSegment:selectedSegment];

switch (clickedSegmentTag) {
case 0: [self showNewEventWindow:nil]; break;
case 1: [self showNewTaskWindow:nil]; break;
case 2: [self toggleTaskSplitView:nil]; break;
case 3: [self showGearMenu]; break;
}
}

段 4 在 awakeFromNib 方法中附加了一个菜单。我希望当用户单击该段时该菜单会下拉。此时,只有当用户单击并按住菜单时,它才会掉落。根据我的在线研究,这是因为关联的操作。

我目前正在通过使用一些代码来获取段控件的原点并使用 NSMenu 的 popUpContextMenu:withEvent:forView 弹出上下文菜单来解决这个问题,但这非常hacktastic,看起来与将菜单下拉到分段控制单元下方的标准行为相比,这很糟糕。

有没有办法可以让菜单在单击后按应有的方式下拉,而不是执行黑客上下文菜单的操作?

最佳答案

子类NSSegmentedCell,重写下面的方法,并替换IB中的单元类。 (不需要私有(private) API)。

- (SEL)action
{
//this allows connected menu to popup instantly (because no action is returned for menu button)
if ([self tagForSegment:[self selectedSegment]]==0) {
return nil;
} else {
return [super action];
}
}

关于cocoa - 尽管已设置操作,但单击分段时仍显示 NSSegmentedControl 菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1203698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com