gpt4 book ai didi

objective-c - 使用scaleUnitSquareToSize时在NSTextView中绘制聚焦环:

转载 作者:行者123 更新时间:2023-12-03 17:21:11 25 4
gpt4 key购买 nike

从 OSX 10.7 开始,Apple 建议使用 drawFocusRingMaskfocusRingMaskBounds 方法作为在基于 NSView 的对象周围绘制聚焦环的方法,而不是之前在 10.6 中的做法(在drawRect:中使用NSSetFocusRingStyle())。 (参见release notes)。

在 OSX 10.10 上测试:

我有一个 NSTextView 后代,它按照建议实现基本的焦点环绘制:

- (void)drawFocusRingMask {
NSRectFill([self bounds]);
}
- (NSRect)focusRingMaskBounds {
return [self bounds];
}

此 NSTextView 以编程方式直接添加到内容 View (没有任何 ScrollView )。

这在大多数情况下都有效,但是,当使用 scaleUnitSquareToSize: 时缩放 NSTextView 时,绘制的焦点环完全不正确。

调用:

[textView scaleUnitSquareToSize:NSMakeSize(1.5, 1.5)];

看起来像这样:

enter image description here

进一步向上或向下缩放会导致聚焦环矩形更加倾斜。将 NSTextView 的比例重置回 {1.0, 1.0} 会导致聚焦环再次正确绘制。

我认为这是聚焦环代码中的某种错误。它似乎在调用 drawFocusRingMask/focusRingMaskBounds 之前对用于绘制聚焦环的图形上下文进行转换(内部类 _NSAutomaticFocusRing 负责此操作) .

知道如何解决这个问题吗?我是否应该找到一种方法将上下文转换为正确的坐标(到目前为止还没有成功)?或者有没有其他方法可以强制聚焦环正常工作?

最佳答案

重写drawFocusRingMask方法(通过NSTextField的子类)允许通过“手动”应用 super View 的比例因子来纠正聚焦环的宽度,但更改高度不起作用。我的猜测是,在缩放之前,聚焦环的高度被固定到文本大小或原始文本字段边界。

这一切都在系统 10.7.5 上。因此,当文本字段的 super View 处于缩放状态时,我只是关闭聚焦环,直到我找到解决方法或任何正确的做法。

关于objective-c - 使用scaleUnitSquareToSize时在NSTextView中绘制聚焦环:,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26997704/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com