Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift NSButtonCell突出显示仍保留在莫哈韦的按键上_Swift_Macos_Nsbutton_Macos Mojave_Nsbuttoncell - Fatal编程技术网

Swift NSButtonCell突出显示仍保留在莫哈韦的按键上

Swift NSButtonCell突出显示仍保留在莫哈韦的按键上,swift,macos,nsbutton,macos-mojave,nsbuttoncell,Swift,Macos,Nsbutton,Macos Mojave,Nsbuttoncell,我有一个派生自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, w

我有一个派生自
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 click with mouse**
isHighlighted true
isHighlighted false
!.changeGrayCellMask

**Mojave after shortcut key**
isHighlighted false
!.changeGrayCellMask
isHighlighted true <----- this is odd
**Mojave用鼠标点击**
石破天惊
石破天惊
!.细胞膜
**快捷键后的莫哈韦**
石破天惊
!.细胞膜
isHighlighted true在动作中:

[button display]; 

这可能是一个不优雅的解决方案。但这对我来说很有效。

听起来像是莫哈韦引入的一个bug。是否有任何解决方法?使用游乐场演示项目更新,在info.plist中显示问题集NSRequiresAquaSystemAppearance=YES,然后查看问题所在happen@RonGahlot,在info.plist中设置该键并不能解决问题。