如何禁用所有鼠标事件到特定的NSView(及其所有子视图)
例如:在下面的图像中, 我有一个scrollView和一个边框视图(比如MyBorderView) 我想要实现的功能是禁用所有鼠标事件以在按下按钮时滚动视图。
我对它的修复是覆盖NSView的mouseDown和rightMouseDown事件。这似乎工作正常,但滚动失败。
简单来说,我想实现一些像[_scrollView disableAllMouseEvents]
这样的东西
答案 0 :(得分:0)
覆盖方法:
- (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];
祝你好运!