gpt4 book ai didi

objective-c - 自定义 NSCell 中的可点击链接

转载 作者:搜寻专家 更新时间:2023-10-30 19:43:20 25 4
gpt4 key购买 nike

我有一个自定义的 NSCell,其中包含各种元素(图像、各种文本片段),其中一个文本 block 可能包含各种可点击的链接。我有我的 NSAttributedString 正确识别链接并将它们着色为蓝色但是我无法弄清楚如何让光标变成一只手并允许用户实际点击它们。

现在我将我的属性字符串直接绘制到显然不可点击的单元格上,但我不确定如何以任何其他方式添加它,因为 NSCell 不是从 NSView 继承的。通常我只是添加一个 NSTextField 作为 subview ,但在这种情况下我不能那样做。

有什么想法吗?

最佳答案

我能想到的唯一解决方案是在您的 NSCell 中通过手动 HitTest 和鼠标跟踪。最难的部分(我没有答案)是如何确定链接文本的正确方向......希望有人能回答这个问题?

一旦您知道了 url 文本的 rect,就可以通过实现 hitTestForEvent 来实现点击操作。我认为您会这样做;

// If the event is a mouse down event and the point is inside the rect trigger the url 
- (NSUInteger)hitTestForEvent:(NSEvent *)event inRect:(NSRect)frame ofView:(NSView *)controlView {
NSPoint point = [controlView convertPoint:[event locationInWindow] fromView:nil];
// Check that the point is over the url region
if (NSPointInRect(point, urlFrame)) {
// If event is mousedown activate url
// Insert code here to activate url
return NSCellHitTrackableArea;
} else {
return [super hitTestForEvent:event inRect:frame ofView:controlView];
}
}

关于objective-c - 自定义 NSCell 中的可点击链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1397258/

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