gpt4 book ai didi

cocoa - 将 NSTextView 坐标转换为屏幕坐标

转载 作者:行者123 更新时间:2023-12-03 16:14:10 25 4
gpt4 key购买 nike

在我的应用程序中,我想在 NSTextView 中显示弹出窗口,并且需要将 NSTextView 中选定矩形的坐标转换为屏幕坐标。我已经尝试过这段代码:

NSWindow* viewWindow = [self window];
NSRect rect = [self firstRectForCharacterRange:[self selectedRange]];
rect = [[self superview] convertRect:rect toView:nil]; //converting to NSClipView coordinate system
rect = [viewWindow convertRectToScreen:rect];
return rect;

它的效果几乎很好,但是返回的矩形的原点被“x”极度“破坏”。例如,如果 rect.origin.x 开始时为 670,则最终等于 1022。

有什么想法吗?

谢谢。

最佳答案

我明白了。

- (NSRect)rectForPopover
{
NSRect rect = [self firstRectForCharacterRange:[self selectedRange]];
NSRect txtViewBounds = [self convertRectToBacking:[self bounds]];
txtViewBounds = [self.window convertRectToScreen:txtViewBounds];

rect = [[self superview] convertRect:rect toView:nil];
rect = [self.window convertRectToScreen:rect];

rect.origin = NSMakePoint(rect.origin.x - txtViewBounds.origin.x - self.window.frame.origin.x, rect.origin.y);

return rect;
}

关于cocoa - 将 NSTextView 坐标转换为屏幕坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096996/

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