2014-11-28 2 views
0

Как отключить все события мыши к определенной NSView (и все его подвидов)Отключить все события мыши для NSView

Для например: В следующем изображении, У меня есть Scrollview и вид границы (скажем, MyBorderView) над ним
Функциональность, которую я хочу добиться, - отключить все события мыши, чтобы прокручивать представление при нажатии кнопки.

Мое исправление заключается в том, чтобы переопределить событие mouseDown и rightMouseDown NSView. Кажется, что это нормально, но не работает для прокрутки.

Говоря простыми словами, я хочу достичь метод некоторые вещи, как [_scrollView disableAllMouseEvents]

enter image description here

ответ

0

Override:

- (void)scrollWheel:(NSEvent *)theEvent; 

Например, у вас есть булева переменная disableEvents для включения или отключить события в вашем представлении прокрутки. Код будет:

- (void)scrollWheel:(NSEvent *)theEvent 
{ 
    // No disable events ---> disableEvents = NO 
    if (!disableEvents) { 
     [super scrollWheel:theEvent]; 
    } 
} 

Если вы установите disableEvents = YES прокрутки будет отключена. С другой стороны, вам нужно отключить скроллеры слишком или свитка работы их перемещения:

[self setHorizontalScroller:nil]; 
[self setVerticalScroller:nil]; 

Если вам нужно поменять местами скроллеры позже, просто написать:

NSScroller *scrollerHorizontal = [[NSScroller alloc]init]; 
NSScroller *scrollerVertical = [[NSScroller alloc]init]; 

[self setHorizontalScroller:scrollerHorizontal]; 
[self setVerticalScroller:scrollerVertical]; 

Удачи!