NSScrollView异常响应空格键

时间:2011-12-21 16:11:15

标签: macos cocoa nsscrollview

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

然后,我使用计时器从左到右更新NSScrollView。除非按空格键,否则一切运行良好。按空格键后,滚动视图将停止一段时间。当我按住空格键时,滚动视图将左右闪烁。

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

我打开了NSTraceEvent,发现了以下日志:

  

2011-12-22 12:36:51.563 CIVideoDemoGL [255:a0f]收到的事件:KeyDown at:131.0,880.0 time:262523518000 flags:0x100 win:0 ctxt:af37 data:1,252,32,49,32 < / p>      

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] timeout = 62767682588.435905秒,mask = ffffffff,dequeue = 1,mode = kCFRunLoopDefaultMode

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

1 个答案:

答案 0 :(得分:0)

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

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