【问题标题】:Prevent the user from manually scrolling NSScrollview?防止用户手动滚动 NSScrollview?
【发布时间】:2016-09-19 15:56:13
【问题描述】:

我正在使用 NSScrollview 以编程方式滚动。我已经隐藏了水平和垂直滚动条,但用户仍然可以使用鼠标滚轮滚动。我想阻止这种手动滚动。

这就是我做自动滚动的方式

- (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];
}

效果很好,但我想阻止用户手动滚动(我只想以编程方式滚动)。有什么办法吗?

【问题讨论】:

  • 至少在一个 UIScrollView 上,你可以设置 userInteractionEnabled=NO。这是 NSScrollView 的一个选项吗?
  • NSScrollview 中没有这个选项。

标签: objective-c macos cocoa nsscrollview


【解决方案1】:

尝试像这样创建自定义滚动视图类,然后包含以下代码:-

    - (void)scrollWheel:(NSEvent *)theEvent
    {
    [[self nextResponder] scrollWheel:theEvent];
     }

【讨论】:

    【解决方案2】:

    终于得到了解决方案。我继承了NSScrollView并覆盖了它的方法滚轮并将其留空。

    - (void)scrollWheel:(NSEvent *)theEvent
    {
        // Do nothing
    }
    

    【讨论】:

      【解决方案3】:

      如果您确实隐藏了滚动条并阻止用户滚动,您确定一开始就想要 NSScrollView 吗?就像你正在做的那样使用 NSClipView 和动画。无需继承和覆盖 scrollWheel:。它更干净简洁。

      【讨论】:

      • 我不得不继承 NSScrollview 来阻止用户手动滚动。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-10
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多