gpt4 book ai didi

cocoa - 单击 NSTableCellView 内的 NSTextView 时如何选择 NSTableView 中的行?

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

我有一个基于 View 的单列 NSTableView。在我的 NSTableCellView 子类中,我有一个可选择但不可编辑的 NSTextView。

当用户直接单击 NSTableCellView 时,该行会正确突出显示。但是,当用户单击 NSTableCellView 内的 NSTextView 时,该行不会突出显示。

如何将 NSTextView 上的点击传递给 NSTableCellView 以便该行突出显示?

类层次结构如下:NSScrollView > NSTableView > NSTableColumn > NSTableCellView > NSTextView

最佳答案

这就是我最终所做的。我创建了 NSTextView 的子类并覆盖 mouseDown: 如下...

- (void)mouseDown:(NSEvent *)theEvent
{
// Notify delegate that this text view was clicked and then
// handled the click natively as well.
[[self myTextViewDelegate] didClickMyTextView:self];
[super mouseDown:theEvent];
}

我正在重用 NSTextView 的标准委托(delegate)...

- (id<MyTextViewDelegate>)myTextViewDelegate
{
// See the following for info on formal protocols:
// stackoverflow.com/questions/4635845/how-to-add-a-method-to-an-existing-protocol-in-cocoa
if ([self.delegate conformsToProtocol:@protocol(MyTextViewDelegate)]) {
return (id<MyTextViewDelegate>)self.delegate;
}
return nil;
}

在标题中...

@protocol MyTextViewDelegate <NSTextViewDelegate>
- (void)didClickMyTextView:(id)sender;
@end

在委托(delegate)中,我实现 didClickMyTextView: 来选择行。

- (void)didClickMyTextView:(id)sender
{
// User clicked a text view. Select its underlying row.
[self.tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:[self.tableView rowForView:sender]] byExtendingSelection:NO];
}

关于cocoa - 单击 NSTableCellView 内的 NSTextView 时如何选择 NSTableView 中的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10184113/

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