OSXでマウスのドラッグでウィンドウを移動する

OSXでツールバーを非表示にしているNSWindowでドラッグで移動したい。

色々探したがなかなか情報が少なかったのでメモしておく。

NSWindowを継承したクラスを作成。
mouseDownで画面のどの場所をクリックしたのか記録。
mouseDraggedでウィンドウの位置をマウスの位置へ移動。マウスの現在位置は[NSEvent mouseLocation]にて取得可能。
それにmouseDown時の位置を加味すればOK.
ソースコードは以下のとおり。大変シンプルです。

 

#import <Cocoa/Cocoa.h>

@interface SGWindow : NSWindow

@end
#import "SGWindow.h"

@implementation SGWindow {
    NSPoint beforePoint;
}

-(void)mouseDown:(NSEvent *)theEvent {
    beforePoint = [theEvent locationInWindow];
    
}

- (void)mouseDragged:(NSEvent *)theEvent {
    NSPoint moLo = [NSEvent mouseLocation];
    
    [self setFrame:NSMakeRect(moLo.x - beforePoint.x, moLo.y - beforePoint.y, self.frame.size.width, self.frame.size.height) display:YES animate:NO];

}
@end

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です