NSScrollView ненормально реагирует на пробел - PullRequest
0 голосов
/ 21 декабря 2011

Я использую NSScrollView для отображения очень длинного NSView, ширина которого превышает 72000 пикселей.Он хорошо прокручивается, когда я перетаскиваю ручку, и также хорошо реагирует на метод scrollRectToVisible.

А затем я использую таймер для обновления NSScrollView слева направо.Все работает хорошо, кроме случаев, когда я нажимаю клавишу пробела.При нажатии клавиши пробела представление прокрутки на некоторое время останавливается.Когда я удерживаю клавишу пробела, представление прокрутки будет мигать вправо и влево.

Интересно, как можно отключить клавишу пробела для представления nsscroll, потому что я не хочу никаких взаимодействий клавиш пробела

Я включил NSTraceEvent и обнаружил следующие журналы:

2011-12-22 12: 36: 51.563 CIVideoDemoGL [255: a0f] Полученное событие: KeyDown at: 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) время = 262,5 флаги = 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?

1 Ответ

0 голосов
/ 22 декабря 2011

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

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

...