问题标签 [nsbuttoncell]
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.
objective-c - 基于 NSCell 的 NSTableView & Bindings 中的 NSButtonCell
我的一列中有一个NSButtonCell
as 数据单元格NSTableView
。表格视图是基于单元格的,有两列;一个带有按钮单元格,一个带有文本字段单元格。
按钮单元格的相应列target
和argument
绑定到我的应用程序委托(作为目标)和一个selectedObjects
数组NSArrayController
(作为参数)。与 Apple 的技术问答之一中概述的内容基本相同。
当我打开应用程序时,表格视图会自动填充。一切都按预期工作。如果我单击一个按钮,我的操作方法就会被调用,并且该方法接收selectedObjects
作为参数。
这不是我想要的功能;我想获取由单击的行表示的对象,NSButtonCell
而不是当前选定的对象(在我的情况下,这是一个NSString
我NSArrayController
填充字符串的对象)。
是否有可能仅通过绑定来获取此特定对象?或者我应该设置NSButtonCell
(数据单元格)的选择器而不绑定?然后通过NSTableView
's-clickedRow
方法获取对象?
swift - 设置 NSButtonCell 的背景颜色
我正在尝试在表格视图中设置复选框的背景颜色,但我很挣扎。目前我的子类NSButtonCell
如下:
然后,在身份检查器中,我将复选框的自定义类设置为MyCheckBox
,但它似乎不起作用。我不确定分配给是否self.backgroundColor
是设置背景颜色的正确方法,或者使用身份检查器是否是让每个复选框使用正确背景颜色的方法,我再次为苹果的庞大数量而苦苦挣扎有关在哪里可以找到此信息的文档。
我还尝试keepOnTopColumn
在视图控制器中为该复选框列(名为 )创建一个出口,并尝试让我的自定义类以这种方式工作:
我也尝试直接访问背景颜色:
但这会导致错误“'Any' 类型的值没有成员 'backgroundColor'”
最后,我还尝试影响单元格的父 NSButton:
swift - NSButton 状态管理
我NSButton
正在使用自定义NSButtonCell
类,而后者又是重写的drawBezel
:
现在我的按钮支持两种类型 1) .momentaryChange
2) .pushOnPushOff
。我期待根据按钮类型,状态会改变或不改变。但无论我使用什么设置setButtonType
,单元格的 .state 成员总是在按下按钮时发生变化。
我是否理解正确,我有责任检查按钮的类型并考虑或不考虑.state
?难道是按钮类型的某些组合会告诉单元格在使用瞬时类型时bezelStyle
在内部忽略吗?.state
如果我必须检查按钮类型,那么我如何检查类型NSButtonCell
?类型不会传递给它。我应该创建自己的属性和传递类型吗?
swift - NSButtonCell 突出显示仍然在 Mojave 的按键上
我有一个派生NSButtonCell
自我绘制挡板的类:
此外,我已keyEquivalent
使用自定义单元格分配给按钮。
在macOS High Sierra上使用鼠标单击或按键都可以正常工作。仅当鼠标或键按下时才会显示突出显示。
日志输出如下所示:
但是,在Mojave上,按键行为是不同的。按键后突出显示状态保持不变,而使用鼠标时,突出显示按预期工作。
Mojave 的日志输出:
莫哈韦有什么改变吗?如您所见,drawBezel
调用顺序完全出乎意料。奇怪的是为什么它只在使用键盘时发生。
如何使用类似于鼠标单击 Mojave 的键盘实现按钮突出显示行为?
更新
我能够在 XCode Playground 中创建最小的项目来演示该问题。你可以在这里下载
macos - NSAttributedString size() 方法返回不正确的宽度
我创建了一个自定义NSButtonCell
子类,它允许自定义按钮内容之间的填充。在我的实现中(完整的源代码可以在GitHub上找到)我重写titleRect(forBounds:)来定位按钮标题:
结果看起来不太好:
我也尝试使用boundingRect(with:options:context:)来获取大小,但我得到了相同的结果。
objective-c - 如何使用 NSButton 中的方法扩展 NSButtonCell?
我不熟悉子类化或扩展 Cocoa 框架。
NSButton 有一个setToolTip
方法,但是 NSButtonCell 没有。我宁愿不添加新的 IBOutlets,那么如何通过访问 NSButton 的方法来实现呢?
我有一系列复选框,都带有 NSButtonCell 插座。我无法访问 setToolTip 方法,但如果我要在同一件事上创建一个 NSButton 插座,我会这样做,这似乎是我被卡住的地方。