NSScrollView 混乱
Posted
技术标签:
【中文标题】NSScrollView 混乱【英文标题】:NSScrollView Confusion 【发布时间】:2014-08-06 10:07:07 【问题描述】:请原谅我在NSScrollView
课程上提出了一个相当模糊的问题。尽管已经阅读了很多内容,但我并没有真正理解它们。
我有一个NSViewController
子类,它有一个xib
。在这个视图中,我加入了NSScrollView
。我从视图控制器类连接了一个IBOutlet
。
这就是我感到困惑的地方。
NSScrollView
documentView
和clipView
有什么区别?当添加到xib
中时,滚动视图会被赋予NSClipView
。为什么?
如果我想在xib
内的滚动视图中添加子视图,我只能将视图放到NSScrollView
的NSClipView
中,而不能直接放到滚动视图中。我还看到,当我调整NSClipView
的大小时,它本身会剪辑我放入的子视图,滚动条会出现在滚动视图上。但是,当我运行我的应用程序时,我无法滚动。其次,当应用程序运行时,子视图不会出现。
有人能解释一下 NSScrollView 是如何工作的吗?到目前为止,我读到的所有内容都没有让我点击它。
【问题讨论】:
【参考方案1】:剪辑视图和滚动视图共同提供滚动行为。剪辑视图对文档视图(即您要在滚动视图中显示的视图)进行实际剪辑。
滚动/剪辑视图在很大程度上知道如何通过查询文档视图的大小来表现,因此重要的是您已将NSView
-子类配置为以这种方式正确运行,方法是(通常)在任何时候调用[self setFrameSize:newSize]
内容发生变化。如果你做对了,那么它应该只是工作
然而,为了解决您面临的实际问题,我需要查看一些代码,所以如果您可以在我可以查看的简单自包含 Xcode 项目中重现该问题,那么是最好的前进方式(但请注意,我目前无法查看)。
【讨论】:
谢谢!我遇到的问题是我觉得有必要将我的子视图直接放在滚动视图/剪辑视图中。我用IBOutlet
创建了一个单独的视图并将其设置为文档视图。现在一切正常!感谢您的解释。
@JoshKahane 不客气。实际上,您应该能够将视图插入滚动视图并使用 IB 使其工作。以上是关于NSScrollView 混乱的主要内容,如果未能解决你的问题,请参考以下文章