我正在使用NSScrollview以编程方式滚动。我隐藏了horizental和垂直滚动条,但用户仍然可以使用鼠标滚轮滚动。我想阻止这种手动滚动。
这就是我自动滚动的方式
- (IBAction)scrollToMidAnimated:(id)sender
{
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setDuration:2.0];
NSClipView* clipView = [self.scrollView contentView];
NSPoint newOrigin = [clipView bounds].origin;
newOrigin.y = [self.scrollView contentView].frame.size.height/2.0;
[[clipView animator] setBoundsOrigin:newOrigin];
[NSAnimationContext endGrouping];
}
它完美无缺,但我想阻止用户手动滚动(我只想以编程方式滚动)。有什么方法可以做到吗?
答案 0 :(得分:4)
尝试这样创建自定义scrollview类,然后包含下面的代码: -
- (void)scrollWheel:(NSEvent *)theEvent
{
[[self nextResponder] scrollWheel:theEvent];
}
答案 1 :(得分:0)
终于得到了解决方案。我将UIScrollView子类化并覆盖其方法滚轮并将其留空。
- (void)scrollWheel:(NSEvent *)theEvent
{
// Do nothing
}
答案 2 :(得分:0)
如果你确实隐藏了滚动条并阻止用户滚动,你确定首先想要NSScrollView吗?只需使用NSClipView和动画,就像你正在做的那样。无需子类化和覆盖scrollWheel:它更清洁简洁。