限制Cocoa中的滚动弹性(NSScrollView)
我有一个cocoa应用程序,它有十几个滚动视图。我喜欢它的弹性,特别是在一些情况下,我会放一些“复活节彩蛋”(有点像图书应用程序中的苹果标志。你向下滚动,你会看到一个苹果标志。) 我的问题是,我需要将公开内容的数量限制在实际内容区域之外。特别是当我用魔法鼠标滚动时,弹性使整个滚动内容消失!在释放滚动条之前,滚动条会向后移动限制Cocoa中的滚动弹性(NSScrollView),cocoa,mouseevent,mousewheel,appkit,nsscrollview,Cocoa,Mouseevent,Mousewheel,Appkit,Nsscrollview,我有一个cocoa应用程序,它有十几个滚动视图。我喜欢它的弹性,特别是在一些情况下,我会放一些“复活节彩蛋”(有点像图书应用程序中的苹果标志。你向下滚动,你会看到一个苹果标志。) 我的问题是,我需要将公开内容的数量限制在实际内容区域之外。特别是当我用魔法鼠标滚动时,弹性使整个滚动内容消失!在释放滚动条之前,滚动条会向后移动 现在,我想把弹性限制在一个特定的范围内。如何管理?NSScrollView管理的视图的“画布”大于任何时候显示的内容。因此,如果您想要不同的行为: 检查一下,但这并不完全符
现在,我想把弹性限制在一个特定的范围内。如何管理?NSScrollView管理的视图的“画布”大于任何时候显示的内容。因此,如果您想要不同的行为:
- 检查一下,但这并不完全符合你的要求。(您希望允许一定量的弹性)
- 子类NSScrollView来实现所需的行为
- 从头开始创建您自己的类(因为您希望处理事件,所以可以从NSResponder继承任何内容)
示例
如果将NSScrollview子类化,我将尝试重写
-(void)scrollWheel:(NSEvent*)
,并检测contentView的边界并将其限制在某个值。围绕以下几行:
- (void)scrollWheel:(NSEvent *)event
{
[super scrollWheel:event];
if (self.contentView.bounds.origin.y > SomeConstant)
/* cap the value */
}
我认为子类方法是最合理的。。正如你所指出的,第一个问题是不可能的,而第三个问题是对车轮进行过多的工作和改造。我很快就会试试的,希望如此。我会很感激一些代码,但我会在测试完后添加我的代码。该死的不!xD我只是自己做的!查看:-(void)滚轮:(NSEvent*)事件{NSRect rectOfInterest=[[self contentView]visibleRect];NSLog(@“Visible Rect:%@”,NSStringFromRect(rectOfInterest));if(rectOfInterest.origin.x>-100){[super scrollWheel:theEvent];}+1.你比我强;)