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