2011-12-21 4 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 время: 262523518000 flags: 0x100 win: 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, Dequeue = 1, режим = kCFRunLoopDefaultMode

Что я должен сделать, чтобы игнорировать клавишу пробела вниз событие для nsscrollview?

ответ

0

Вы должны подкласс NSScrollView, переопределить -keyDown: и в вашей реализации игнорировать пробелы.

Однако, я считаю, что использовать такой большой NSView, как правило, неразумно. Вместо этого вы должны использовать меньший NSView и отображать только видимую часть отображаемого содержимого. Вам нужно будет реализовать свою собственную прокрутку с помощью объектов NSScroller, но это даст вам гораздо лучшую производительность, чем огромный NSView.

+0

Спасибо, Роб. Я уже подклассифицировал NSScrollView и выяснил, что он никогда не будет вызван для метода -keDown:. –

Смежные вопросы