- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个派生自 NSButtonCell
的类,我在其中绘制边框:
override func drawBezel(withFrame frame: NSRect, in controlView: NSView) {
let path = NSBezierPath(bound: frame.insetBy(dx: CGFloat(config.buttonInset), dy: CGFloat(config.buttonInset)), withCorners: corners, withRadius: CGFloat(config.cornerRadius), flip: flipIt)
path.lineWidth = config.borderWidth
if(isEnabled)
{
if(isHighlighted)
{
print("isHighlighted true")
let fillColor: NSColor = colorMap.buttonHighlightColor
let strokeColor: NSColor = colorMap.buttonBorderColor
fillColor.setFill()
strokeColor.setStroke()
path.fill()
path.stroke()
}
else
{
print("isHighlighted false")
if(showsStateBy.contains(.changeGrayCellMask))
{
print(".changeGrayCellMask")
if(state == .on)
{
print(".on")
let fillColor: NSColor = colorMap.buttonOnColor
let strokeColor: NSColor = colorMap.buttonBorderColor
fillColor.setFill()
strokeColor.setStroke()
path.fill()
path.stroke()
}
else
{
print(".off")
let fillColor: NSColor = colorMap.buttonBackgroundColor
let strokeColor: NSColor = colorMap.buttonBorderColor
fillColor.setFill()
strokeColor.setStroke()
path.fill()
path.stroke()
}
}
else
{
print("!.changeGrayCellMask")
let fillColor: NSColor = colorMap.buttonBackgroundColor
let strokeColor: NSColor = colorMap.buttonBorderColor
fillColor.setFill()
strokeColor.setStroke()
path.fill()
path.stroke()
}
}
}
else
{
let fillColor: NSColor = colorMap.buttonBackgroundDisabledColor
let strokeColor: NSColor = colorMap.buttonBorderColor
fillColor.setFill()
strokeColor.setStroke()
path.fill()
path.stroke()
}
}
此外,我还使用自定义单元格将 keyEquivalent
分配给了按钮。
在 macOS High Sierra 上使用鼠标单击或按键都可以正常工作。仅当按下鼠标或键时才会显示突出显示。
日志输出如下所示:
**after click with mouse**
isHighlighted true
isHighlighted false
!.changeGrayCellMask
**after shortcut key**
isHighlighted true
isHighlighted false
!.changeGrayCellMask
但是,在 Mojave 上,按键行为不同。按键后高亮状态仍然存在,而在使用鼠标时,高亮会按预期运行。
Mojave 的日志输出:
**Mojave click with mouse**
isHighlighted true
isHighlighted false
!.changeGrayCellMask
**Mojave after shortcut key**
isHighlighted false
!.changeGrayCellMask
isHighlighted true <----- this is odd
Mojave 中是否有一些更改。如您所见,drawBezel
调用顺序完全出乎意料。奇怪的是为什么它只在使用键盘时发生。
如何使用键盘实现按钮高亮行为,类似于在 Mojave 上单击鼠标?
更新
我能够在 XCode Playground 中创建最小项目来演示该问题。可以下载here
最佳答案
Action 内部:
[button display];
这可能不是一个优雅的解决方案。但这对我有用。
关于swift - NSButtonCell 突出显示仍保留在 Mojave 中的按键上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52924429/
我对 NSButtonCell 类进行了子类化,以使按钮具有不同的外观。我的绘图代码工作正常。它是一个充满 CGGradients 的圆形按钮,看起来像 iTunes 播放控件。它们并不完全相同,但对
我想为我的应用程序创建一个自定义开关,其中我为可能的状态(打开、关闭、鼠标按下)提供三个图像。整个外观包含在图像中,因此我不希望 Cocoa 在鼠标按下期间自行突出显示(变暗)按钮。 目前,我已经创建
我正在尝试创建一个使用凹进式 NSButtonCell 对象的自定义范围栏。但是,当鼠标悬停时,我无法绘制边框。我可以通过创建跟踪区域并在鼠标位于内部时将 showBorderOnlyWhileMou
我有一个带有复选框样式单元格的表格,但我不知道如何让这些按钮显示它们应该显示的标题。数据源应该是字符串数组吗?字典数组(字符串/ bool 值)? NSButtonCell 数组?这些似乎都不起作用=
我有 NSTableView 对象,它由带有 NSButtonCell 单元格的一列组成。我还有一个实现 NSTableViewDataSource 协议(protocol)的类。设置单元格值的方法:
我有 NSTableView ,我在上面动态地为每一行创建一个按钮。 NSButtonCell *cell = [[NSButtonCell alloc] init] ; [cell
我在 NSTableView 中使用多个 NSButtonCell 对象。它们是简单的方形按钮,上面有自定义图像。 这些按钮在未突出显示时正确绘制:所有可见的都是图像,按钮矩形的其余部分是透明的。但是
我一直在阅读有关 NSButtons 和 cells 的 Apple 文档,但我似乎真的无法理解两者之间的区别。更复杂的是,它们似乎都有大量重叠的方法,例如 setTitle: 等,而且我不确定应该使
出于某种原因,我的 TableView 的 NSButtonCell 将错误的对象作为参数传递。单击后,我试图读取 NSButtonCell 的标签。 这是我的代码的简化版本: - (int)numb
下面代码中的 NSButtonCell 工作正常,但单击时不会显示复选图标。有什么想法吗? - (NSCell *)outlineView:(NSOutlineView *)outlineView
我想让一个按钮出现在 TableView 中作为最后一行的第一个元素而不是普通数据,所以我创建了 NSTableView 的子类并覆盖了 preparedCellAtColumn:row: 方法以在最
我有一个 NSMatrix,其中有几个 NSButton,它们没有文本,只有图像。其中一张图像是从互联网下载的,我希望在我的 OS X 应用程序中将其变成圆角。 我找到了一个几乎就是我正在寻找的答案:
在 Interface Builder 中,我已将 NSTableView 实例的一列的 dataCell 设置为 NSButtonCell。这按预期工作,但是,尝试使用"template"图像在单击
我正在尝试弄清楚如何在 Cocoa/OSX 中自定义绘制按钮。由于我的 View 是自定义绘制的,因此我不会使用 IB,而是希望用代码来完成这一切。我创建了 NSButtonCell 的子类和 NSB
我有一个 NSTableView,其中一列中包含一个 NSButtonCell。我可以设置在 Interface Builder 中单击按钮时调用的操作,但我无法找到确定按钮存在于表中的哪一行。有什么
在我的 cocoa 应用程序中,我需要一个用于 NSTableView 的自定义 NSCell。这个 NSCell 子类包含一个自定义 NSButtonCell 用于处理点击(以及两个或三个用于文本内
我实现了一个带有图像的 NSButton。 当用户悬停它时,图像会变成其他东西,然后再变回来。 正常状态: 悬停时: 我为 NSButtonCell 使用的代码是: 接口(interface): #i
如何设置 NSButtonCell 的标签(标题)文本的颜色,即表格 View 的列单元格?在我的例子中,它是一个复选框按钮单元格。 (是否可以使用IB?) 最佳答案 试试这个,我认为它是完美的。 N
我有一个派生自 NSButtonCell 的类,我在其中绘制边框: override func drawBezel(withFrame frame: NSRect, in controlView: N
我目前正在开发自定义主题的 NSButton。我发现的每个教程或指南都需要子类化 NSButtonCell,甚至是 the guide from Apple . 所有这些似乎都过时了,因为 NSCon
我是一名优秀的程序员,十分优秀!