我的窗口类中有一个函数,可以在移动滚轮时移动其框架
-(void)scrollWheel:(NSEvent *)theEvent{
switch (theEvent.phase) {
// Whilst Scrolling
case NSEventPhaseChanged:
float newPos = [theEvent.window.contentView frame].origin.x + [theEvent scrollingDeltaX];
[theEvent.window.contentView setFrame: NSMakeRect(newPos, 0, 600, 600];
[self invalidateShadow];
[self display];
break;
}
}
这具有预期的效果,框架左右移动完美。有两种意外行为我似乎无法确定。
窗口设置为 [window setHasShadow:YES],我希望窗口是透明的,所以我最初将窗口设置为
[窗口 setBackgroundColor:[NSColor colorWithCalibratedWhite:0.75 alpha:0.00]];
但是在这种情况下,没有框架的屏幕部分上的手势没有注册——一旦我把 alpha 调到
[window setBackgroundColor:[NSColor colorWithCalibratedWhite:0.75 alpha:0.05]];
它确实收到了输入。但是,如果选择了这些选项中的任何一个,setHasShadow 默认设置为边框而不是实际窗口 - 这是预期的行为吗?
- 虽然向左移动时边框与框架一起重新绘制,但向右移动时却不跟随它!?+ vs - scrollingDeltaX 到底有什么不同?
希望有人可以提供一些见解。