问题标签 [nscell]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1089 浏览

cocoa - 在 NSCell (NSTextAttachmentCell) 上处理鼠标

无法弄清楚如何处理鼠标移动NSCell(或NSTextAttachmentCell)。可能吗 ?

0 投票
1 回答
1004 浏览

nsoutlineview - 当另一个 NSCell 改变时刷新一个 NSCell

我的 NSOutlineView 中有两列。一种是文本和图像单元格(类似于 DragNDropOutlineView Apple 示例代码中的类)。旁边是一个名为“XFToggleCell”的自定义 NSCell 子类,用于显示可以打开和关闭的可见性图标(眼球)(就像 Photoshop 一样)。

XFToggleCell 支持鼠标跟踪/拖动(同样,就像 Photoshop 一样),因此您可以单击一个眼球,然后向下拖动以一次显示/隐藏多个项目。在文本和图像单元格中,当项目隐藏时,我将文本显示为灰色,而不是显示为黑色。

几乎一切工作正常。当我单击一个眼球 (XFToggleCell) 时,它的图像会被清除并且我的模型对象会被隐藏。但是,相邻的文本和图像单元格的字体不会变成灰色(它不会更新),直到我再次单击切换单元格......当我这样做时,图像和文本单元格的文本的颜色总是与什么相反它应该是(当点击可见性时,文本变为灰色,反之亦然)。

我确定发生这种情况的原因是因为在更改切换单元格的值之前正在重绘文本和图像单元格。结果,它的显示总是“一键落后”。顺序是这样的:

  1. 我将鼠标放在第 1 列的切换单元格上。
  2. 重绘第 0 列中的文本和图像单元格。
  3. 第 1 列中切换单元的对象值已更改。
  4. 重绘第 1 列中的切换单元格。

如果我可以像上面的步骤 5 那样强制重绘第 0 列中的文本和图像单元格,我应该很高兴。

由于单击第 1 列的单元格,如何强制更新第 0 列的文本和图像单元格的绘图?

这是我认为关键方法的实现......在我的 XFToggleCell.m 中,它位于第 1 列中:

0 投票
0 回答
623 浏览

objective-c - 不使用 NSTextFieldCell 更改 NSCell 单元格中的背景颜色

目前我的桌子上有四列。三个是 NSTextFieldCells,一个是使用 NSCell 的自定义单元格。我需要更改一行的颜色。我已经更改了 NSTextFieldCells 的颜色,但现在我需要更改 NSCell 背景颜色,有没有办法做到这一点?我绝对不能使用 NSTextFieldCell 来完成这个单元格。

0 投票
2 回答
1170 浏览

objective-c - NSCell 重绘问题

我正在创建一个NSCell子类,它将一些对象直接绘制到视图上(使用),并且还简单地使用 NSView 的选择器drawInRect:fromRect:operation:fraction:respectFlipped:hints:绘制一个实例。NSButtonaddSubview:

虽然使用第一种方法绘制的对象都绘制正确,但我在NSButton正确绘制时遇到了问题。问题是我的NSButton实例会在正确的位置绘制,但会重复多次。

我已经在互联网上研究了一段时间,有些人建议使用缓存,但我不确定这是否有效。(使用 for 循环访问包含按钮的数组肯定会导致滚动缓慢,因为我显示了很多数据......)

你会怎么做?我在吠叫错误的树吗?

这是相关代码:

0 投票
1 回答
1012 浏览

cocoa - 让 NSSearchField 使用 NSTokenFieldCell?

我正在尝试在 10.7+ 上模拟 Mail.app 和 Finder.app 的标记化搜索功能,其中看起来是一个 NSSearchField,左侧是搜索放大镜图标,右侧是取消 (x) 按钮,但是还包括搜索字段内的标记。

带有标记的 NSSearchField

有没有办法让 NSSearchField 使用 NSTokenFieldCell 而不是 NSSearchFieldCell?我尝试调用-setCell:NSSearchField 实例,该实例有效并且似乎换出了单元格,正如调用po [searchField cell]调试器所证明的那样,但是搜索字段的绘图中断并且没有绘制文本字段。

我是以正确的方式解决这个问题还是有更好的方法来做到这一点?谢谢!

2016 年10 月 25 日更新:使用 Accessibility Inspector 我发现 Finder 和 Mail 使用混合私有子类:

  • SGTSearchField : NSSearchField
    • SGTSearchFieldCell : NSSearchFieldCell
    • SGTTokenFieldCell : NSTokenFieldCell

这些是名为Suggestions.framework. 希望苹果将来会公开这些课程。如果您也想公开此功能,请务必提交雷达文件。

0 投票
1 回答
189 浏览

macos - 编辑自定义 NSCell

我正在创建一个自定义 NSCell,它将像 XCode 中的快捷方式捕获单元格一样工作,并试图弄清楚如何拦截编辑请求(例如,当用户双击一个单元格时)。有什么方法可以确定正在启动编辑吗?

0 投票
1 回答
164 浏览

objective-c - NSCell 的意外行为

我正在实现NSActionCell(内部NSTableView)的子类,并注意到一些不寻常的事情。如果我isEditing在用户单击单元格时设置属性 ( ),则该属性的值会丢失,因为NSCell此后不久就会释放。我认为发生这种情况是因为我没有正确处理复制,所以我添加了copyWithZone. 现在我看到copyWithZone被调用 - 但它是在一个意外的实例上调用的 - 并且该实例上的属性是NO- 默认值。每次copyWithZone调用时,都会在同一个实例上调用它。

任何人都可以阐明这种行为吗?我正在附加有问题的子类,以及我得到的输出。当用户单击不同的单元格时,我需要做什么才能保留单元格的属性?

输出(当用户单击单元格时产生):

再单击一次(在不同的单元格上):

0 投票
1 回答
923 浏览

objective-c - NSControl 和 NSCell:以正确的方式管理单元状态

我有一个完全定制NSControl的完全定制NSCell。现在我想实现一些鼠标交互。例如,当用户单击控件时,我想将控件状态更改为,highlight所以问题是:

1)我必须在哪里处理鼠标事件?在中NSControl还是直接在中NSCell

目前我正在使用 NSCell 子类中的代码:

2)NSCell状态是否由 ? 自动管理NSControl?如果我将NSControlstete 设置为highlight它将被镜像到NSCell?

3)那启用的属性呢?目前我在 NSControl 中写了这段代码: 而在 NSControl 中的这段代码

您是否特别建议使用自定义 NSControl+NSCell 处理鼠标事件?

0 投票
1 回答
208 浏览

macos - NSCell 标题在请求之前不会更新

我正在尝试实现一个自定义的“NSTextField”,它会在用户插入文本时自动调整自身大小。

这是一个足够简单的任务,这是我正在使用的代码:

哪个工作。好奇的是,如果我评论调用NSTextField's 单元格标题的行

它停止工作。似乎该单元格在请求之前不会更新其标题。当然,如果单元格的标题没有改变,那么当用户输入文本时,文本字段就不能自行调整大小。

这种行为是功能还是错误?

正如我所说,上面的代码完成了这项工作,所以这更像是一种好奇心。唯一的烦恼是该行会产生警告,我想知道是否有更好的方法来做到这一点。

编辑:没关系,我发现如果我将行更改为[(NSCell *)self.cell title];编译器停止抱怨。尽管如此,对功能或错误的好奇心仍然存在。

0 投票
1 回答
266 浏览

nstableview - Cocoa:自定义 NSCell 不响应双击动作

我专注于 10.6 支持的可可应用程序,我使用基于单元格的NSTableView.

我自定义了它,NSCell以便它可以显示图像和文本。这里的问题是:当我将 设置doubleClickAction为 tableview 时,它没有响应。

由于自定义单元格,我已经找到了它。我猜细胞会停止响应链,但我不知道如何修复它。我搜索文档,但我不知道要覆盖哪种方法。

请提供一些指导,谢谢!