2

ウィンドウ クラス内に、スクロール ホイールを動かしたときにフレームを移動する関数があります。

-(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 つあります。

  1. ウィンドウは [window setHasShadow:YES] に設定されています。ウィンドウを透明にしたいので、最初にウィンドウを

    [window setBackgroundColor:[NSColor colorWithCalibratedWhite:0.75 alpha:0.00]];

しかし、この場合、フレームのない画面の部分でのジェスチャーは登録されませんでした-アルファを最大にすると

[window setBackgroundColor:[NSColor colorWithCalibratedWhite:0.75 alpha:0.05]]; 

入力を受け取りました。ただし、これらのオプションのいずれかが選択されていると、setHasShadow はデフォルトで実際のウィンドウではなくフレームに接するようになりました - これは意図された動作ですか?

  1. 左に移動すると枠で境界線を描き直すのに、右に移動すると枠が追従しない!? + と - scrollingDeltaX では一体何が違うのでしょうか?

うまくいけば、誰かが洞察を提供してくれるでしょう。

4

0 に答える 0