ウィンドウ クラス内に、スクロール ホイールを動かしたときにフレームを移動する関数があります。
-(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;
}
}
これには望ましい効果があり、フレームは完全に左右に動きます。突き止められないように見える意図しない動作が 2 つあります。
ウィンドウは [window setHasShadow:YES] に設定されています。ウィンドウを透明にしたいので、最初にウィンドウを
[window setBackgroundColor:[NSColor colorWithCalibratedWhite:0.75 alpha:0.00]];
しかし、この場合、フレームのない画面の部分でのジェスチャーは登録されませんでした-アルファを最大にすると
[window setBackgroundColor:[NSColor colorWithCalibratedWhite:0.75 alpha:0.05]];
入力を受け取りました。ただし、これらのオプションのいずれかが選択されていると、setHasShadow はデフォルトで実際のウィンドウではなくフレームに接するようになりました - これは意図された動作ですか?
- 左に移動すると枠で境界線を描き直すのに、右に移動すると枠が追従しない!? + と - scrollingDeltaX では一体何が違うのでしょうか?
うまくいけば、誰かが洞察を提供してくれるでしょう。