Cocoa NSB按钮的可选区域
所以我基本上是在尝试制作一个可选文本项的列表,只是一个文本列表,没有按钮边框、背景等等。。我想我可以使用NSTableview实现这一点,但是试图使表视图完全透明并且仍然可以正常工作给了我一些问题。顺便说一句,我正在尝试使用我通过编程创建并添加到列表视图中的NSButtons来实现这一点,而不需要任何背景或挡板。但是,当我将属性设置为使按钮透明且不带挡板时,按钮的可单击区域仅降级为按钮标题的文本。单击该按钮应位于标题周围的任何其他位置将不再起作用。这是我正在使用的代码。我希望能够在创建按钮的矩形中的任何位置单击,以引起单击。仅供参考,我尝试过NSSwitchButton,但没有复选框图像,也是一样。谢谢你的帮助Cocoa NSB按钮的可选区域,cocoa,nsbutton,Cocoa,Nsbutton,所以我基本上是在尝试制作一个可选文本项的列表,只是一个文本列表,没有按钮边框、背景等等。。我想我可以使用NSTableview实现这一点,但是试图使表视图完全透明并且仍然可以正常工作给了我一些问题。顺便说一句,我正在尝试使用我通过编程创建并添加到列表视图中的NSButtons来实现这一点,而不需要任何背景或挡板。但是,当我将属性设置为使按钮透明且不带挡板时,按钮的可单击区域仅降级为按钮标题的文本。单击该按钮应位于标题周围的任何其他位置将不再起作用。这是我正在使用的代码。我希望能够在创建按钮的矩形
for(NSString *theTask in theTasks){
NSButton *theCheckBox = [[[NSButton alloc] initWithFrame:NSMakeRect(xCoordinate + 25, yCoordinate + ([tasksWindow frame].size.height/2) - 60, [tasksWindow frame].size.width - 40, 25)] autorelease];
[theCheckBox setButtonType:NSToggleButton];
[theCheckBox setAction:@selector(taskChecked:)];
[[theCheckBox cell] setBackgroundColor:[NSColor clearColor]];
[[theCheckBox cell] setBordered:NO];
NSAttributedString *theTitle = [[[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@", theTask] attributes:[NSDictionary dictionaryWithObject:[NSColor whiteColor] forKey:NSForegroundColorAttributeName]] autorelease];
[theCheckBox setAttributedTitle:theTitle];
[[tasksWindow contentView] addSubview:theCheckBox];
yCoordinate -= 20;
}
更新:我已经确认,将背景色设置为“清除”似乎是导致按钮停止响应其完整边界内的单击的原因,而不是删除边界。因此,回答我自己的问题,这是因为我将透明按钮覆盖在一个透明窗口上,该窗口拒绝鼠标事件。我只需将窗口设置为不忽略鼠标事件,该行为就会消失