dis*_*dev 6 macos nsscrollview
我阅读了文档同步滚动视图,并完全按照文档进行操作,但有一个问题.
我想同步NSTableView和NSTextView.首先让NSTableView监视NSTextView,当我滚动TextView时一切正常,但是当我尝试滚动TableView时,我发现TableView将首先跳转到另一个地方(可能是向后几行),然后继续从那个地方滚动.
即使我让TextView监视TableView后,这个问题仍然存在.
有谁知道这是什么问题?我不能同步TableView和TextView?
编辑: 好的,现在我发现TableView将返回到上次滚动后的位置.例如,TableView的第一行是第10行,然后我滚动TextView,现在TableView的第一行是第20行,如果我再次滚动TableView,TableView将首先返回第10行,然后开始滚动.
我刚刚在对一个非常类似的情况(在 Lion 上)进行故障排除时遇到了这个确切的问题。我注意到这只在滚动条隐藏时才会发生——但我验证它们仍然存在于笔尖中,并且仍然正确实例化。
我什至一定要打电话-[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];
}
Run Code Online (Sandbox Code Playgroud)
然后,我允许滚动条在 Interface Builder 中“可见”。然而,由于它们隐藏起来,它们不会出现在屏幕上,用户也无法单击它们。令人惊讶的是,IB 设置和hidden属性并不等同,但从行为中可以清楚地看出它们并不等同。
这不是最好的解决方案,但它是我想到的最简单的解决方法(到目前为止)。
| 归档时间: |
|
| 查看次数: |
1109 次 |
| 最近记录: |