gpt4 book ai didi

macos - 同步两个 NSScrollView

转载 作者:行者123 更新时间:2023-12-04 15:36:47 25 4
gpt4 key购买 nike

我阅读了文档 Synchronizing Scroll Views ,并且完全按照文档进行,但是有一个问题。

我想同步一个 NSTableView 和一个 NSTextView。先让NSTableView监控NSTextView,当我滚动TextView的时候一切正常,但是当我尝试滚动TableView的时候,我发现TableView一开始会跳转到另一个地方(可能向后几行),然后从那个地方继续滚动.

即使在我让 TextView 监控 TableView 之后,这个问题仍然存在。

有谁知道有什么问题?我不能同步 TableView 和 TextView 吗?

已编辑:
好的,现在我发现 TableView 会回到上次滚动后的位置。比如TableView的顶行是第10行,然后我滚动TextView,现在TableView的顶行是第20行,如果我再次滚动TableView,TableView会先回到第10行,然后开始滚动。

最佳答案

我在对非常相似的情况(在 Lion 上)进行故障排除时遇到了这个确切的问题。我注意到这只发生在滚动条被隐藏时——但我证实它们仍然存在于 Nib 中,并且仍然被正确实例化。

我什至确保调用-[NSScrollView reflectScrolledClipView:] ,但这并没有什么不同。看起来这确实是 NSScrollView 中的一个错误。

无论如何,我能够通过创建自定义滚动类来解决这个问题。我所要做的就是重写以下类方法:

+ (BOOL)isCompatibleWithOverlayScrollers
{
// Let this scroller sit on top of the content view, rather than next to it.
return YES;
}

- (void)setHidden:(BOOL)flag
{
// Ugly hack: make sure we are always hidden.
[super setHidden:YES];
}

然后,我允许滚动条在 Interface Builder 中“可见”。但是,由于它们隐藏自己,它们不会出现在屏幕上,并且用户无法单击它们。令人惊讶的是 IB 设置和 hidden属性不等价,但从行为中可以清楚地看出它们不等价。

这不是最好的解决方案,但它是我想出的最简单的解决方法(到目前为止)。

关于macos - 同步两个 NSScrollView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6596567/

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