我有一个 NSScrollView ,有各种子视图类型 . 有些是 NSTextViews ,有些是 NSTextFields ,有些是 NSButtons 等 .

当我将 NSScrollView 的放大倍率设置为1.0以外的任何值时,焦点环不会在视图的正确位置上绘制 .

例如,这应该是它的样子(缩放为1.0):

Focus ring on NSTextView with NSScrollView at 1.0 magnification

但是放大1.5倍,这就是它的样子:

Focus ring on NSTextView with NSScrollView at 1.0 magnification

请注意,在Stack Overflow上,图像看起来大小相同,但在实际屏幕截图中,1.5缩放图像更大 . 但你得到的想法是聚焦环被偏移 .

要设置放大率,我使用以下代码:

[self.scrollView setMagnification:zoomLevel]

所以这是非常简单的代码 . NSTextView 显然有自己的 NSScrollView 围绕它,这实际上是焦点环正在绘制的地方 . 正如您在这些屏幕截图中看到的那样,常见的 NSTextFieldsNSButtons 存在同样的问题:

NSTextField with focus ring and NSScrollView magnification at 1.5

NSButton with focus ring and NSScrollView magnification at 1.5

你可以看到按钮的聚焦环只是一个蓝点偏离它应该的位置 .

放大1.0倍,看起来都很正常 .

如果我使用捏缩放,当滚动视图被缩放时,您可以看到聚焦环远离场移动 .

有谁知道使用 NSScrollViewsetMagnification 方法的正确方法应该是什么?看起来我应该能够设置值 . 这确实有效,但我有这些麻烦,焦点环没有排队 .

任何帮助或想法将不胜感激 .

这是在Mac OS X 10.10.1上,但它也发生在OS X 10.9.x上 . 并且也发生在OS X 10.10上 .