2011-12-21 56 views
0

我使用NSScrollView來顯示一個非常長的NSView,其寬度超過72000像素。當我拖動旋鈕時它滾動得很好,它也很好地響應scrollRectToVisible方法。NSScrollView響應空間鍵異常

然後,我使用計時器從左到右更新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

CIVideoDemoGL [255:a0f] In Application:NSEvent:type = KeyDown loc =(0,944)time = 262.5 flags = 0x100 CIVideoDemoGL [255:a0f] win = 0x0 winNum = 47 ctxt = 0xaf37 chars =「」unmodchars =「」repeat = 1 keyCode = 49 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 =

2011-12-22 12:36:51.564 CIVideoDemoGL [255:A0F]超時=62767682588.435905秒,面具= FFFFFFFF,出隊= 1,模式= kCFRunLoopDefaultMode

我應該怎麼做忽略空格鍵下來nsscrollview事件?

回答

0

您應該子類NSScrollView,覆蓋-keyDown:並在您的實施忽略空格。

但是,我認爲使用如此大的NSView通常是不明智的。相反,您應該使用較小的NSView,並且只繪製您顯示的內容的可見部分。您將需要使用NSScroller對象來實現自己的滾動,但這會給您帶來比巨大的NSView更好的性能。

+0

謝謝Rob。我已經對NSScrollView進行了分類,發現它永遠不會被調用-keDown:方法。 – 2011-12-22 04:49:57