【问题标题】:NSScrollView responds abnormally to space keyNSScrollView 对空格键响应异常
【发布时间】:2011-12-21 16:11:15
【问题描述】:

我正在使用 NSScrollView 显示一个很长的 NSView,宽度超过 72000 像素。当我拖动旋钮时它滚动良好,并且它对 scrollRectToVisible 方法的响应也很好。

然后,我使用计时器从左到右更新 NSScrollView。除了按空格键外,所有事情都运行良好。按下空格键时,滚动视图将停止一会儿。当我按住空格键时,滚动视图会左右闪烁。

我想知道如何禁用 nsscroll 视图的空格键,因为我不想要任何空格键交互

我打开NSTraceEvent,发现如下日志:

2011-12-22 12:36:51.563 CIVideoDemoGL[255:a0f] 接收事件:KeyDown 在:131.0,880.0 时间:262523518000 标志:0x100 获胜:0 ctxt:af37 数据:1,252,32,49,32

2011-12-22 12:36:51.563 CIVideoDemoGL[255:a0f] 在应用程序中:NSEvent: type=KeyDown loc=(0,944) time=262.5 flags=0x100 win=0x0 winNum=47 ctxt=0xaf37 chars=" " unmodchars=" " repeat=1 keyCode=49

2011-12-22 12:36:51.563 CIVideoDemoGL[255:a0f] 在窗口中:NSEvent: type=KeyDown loc=(0,944) time=262.5 flags=0x100 win=0x0 winNum=47 ctxt=0xaf37 chars=" " unmodchars=" " repeat=1 keyCode=49

2011-12-22 12:36:51.564 CIVideoDemoGL[255:a0f] 超时 = 62767682588.435905 秒,掩码 = ffffffff,出队 = 1,模式 = kCFRunLoopDefaultMode

如何忽略 nsscrollview 的空格键按下事件?

【问题讨论】:

    标签: macos cocoa nsscrollview


    【解决方案1】:

    您应该继承NSScrollView,覆盖-keyDown:,并在您的实现中忽略空格。

    但是,我认为使用这么大的NSView 通常是不明智的。相反,您应该使用较小的NSView,并且只绘制您正在显示的内容的可见部分。您需要使用NSScroller 对象实现自己的滚动,但这将比巨大的NSView 提供更好的性能。

    【讨论】:

    • 谢谢罗伯。我已经对 NSScrollView 进行了子类化,发现它永远不会被 -keDown: 方法调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-27
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2015-10-30
    • 2016-01-14
    • 1970-01-01
    相关资源
    最近更新 更多