放大率不是1.0的NSScrollView会导致NSFocusRing偏移

时间:2014-11-26 06:54:56

标签: objective-c cocoa appkit nsscrollview

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

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

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

Focus ring on <code>NSTextView</code> with <code>NSScrollView</code> at 1.0 magnification

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

Focus ring on <code>NSTextView</code> with <code>NSScrollView</code> 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倍,看起来都很正常。

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

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

非常感谢任何帮助或想法。

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

0 个答案:

没有答案