我有一个有十几个滚动视图的可可应用程序。我喜欢这种弹性,尤其是在某些情况下,我实际上会放某种“复活节彩蛋”(有点像图书应用程序中的苹果标志。向下滚动,你会看到一个苹果标志。)
我的问题是,我需要限制超出实际内容区域的公开内容数量。特别是当我用魔术鼠标滚动时,弹性导致整个滚动内容消失!直到您释放卷轴,它才会移回。
现在,我想将弹性限制在特定的边际。如何?
我有一个有十几个滚动视图的可可应用程序。我喜欢这种弹性,尤其是在某些情况下,我实际上会放某种“复活节彩蛋”(有点像图书应用程序中的苹果标志。向下滚动,你会看到一个苹果标志。)
我的问题是,我需要限制超出实际内容区域的公开内容数量。特别是当我用魔术鼠标滚动时,弹性导致整个滚动内容消失!直到您释放卷轴,它才会移回。
现在,我想将弹性限制在特定的边际。如何?
NSScrollView 管理一个视图,它的“画布”比任何时候都/可以显示的更大。因此,如果您想要不同的行为:
(void)setHorizontalScrollElasticity:
,但这并不完全符合您的要求。(你想允许固定量的弹性)例如,我曾经写过一个世界地图程序,但需要地图在水平轴上永远循环。我只是使用子类 NSView 手动管理滚动。(目前无权访问代码)
需要思考的事情: 我理解你的原因,但只是想提一下。该行为应该是用户所期望的。如果它看起来像一个按钮,它应该像 out 一样。目前,滚动视图具有弹性,因此当它们通过动量滚动时(用户不再触摸),一旦到达终点,它就不会突然停止……这对用户来说是不和谐的。
示例
如果继承 NSScrollview,我会尝试覆盖- (void)scrollWheel:(NSEvent *)
并检测 contentView 的边界并将其限制在某个值。围绕以下几行:
- (void)scrollWheel:(NSEvent *)event
{
[super scrollWheel:event];
if (self.contentView.bounds.origin.y > SomeConstant)
/* cap the value */
}