FC2ブログ

頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


macOSのNSScrollView上のマウスカーソルの位置を得る

macOSのSpriteKitでマウスカーソルの位置を得る
↑ここではSpriteKitを使ったviewでのマウスカーソル位置を得たが、今回はNSScrollViewの場合。
もちろん、画面をスクロールさせたらそれ相応の位置を取得したい。

NSScrollView関連のファイル構成図

↑NSScrollViewを使う場合、なにやらいろんなクラスが付随しててどこに処理を記述すればいいんだ?となりそうだ。

macOSでのスクロールビュー NSScrollView の最小実装
↑ここでScroll Viewの左上を原点にするためにNSClipViewの一階層下のviewのためにわざわざクラスのファイルを作成しないとだめなことを面倒だな、と思ったのだが、、、
今回のScroll Viewでのマウスカーソルの座標を得る処理をこのクラス(ContentView)に記述できる。

以下はContentViewクラスの実装ファイルの一部。
- (void)drawRect:(NSRect)dirtyRect 
{
    [super drawRect:dirtyRect];
    
    NSTrackingAreaOptions options = (NSTrackingActiveAlways | NSTrackingMouseMoved);
    NSTrackingArea *trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds]
                                                        options:options
                                                          owner:self
                                                       userInfo:nil];
    [self addTrackingArea:trackingArea];
}

-(BOOL)isFlipped
{
    //左上原点にするための記述
    return YES;
}

- (void)mouseMoved:(NSEvent *)event
{
    NSPoint p = event.locationInWindow;
    p = [self convertPoint:p fromView:nil];
    //その後の処理など
}
↑drawRect: メソッドにお決まりの(?)処理を記述し、mouseMoved: で受け取る。
座標を変換し左上原点の位置を得る。
画面をスクロールしても意図する座標の取得ができた。

<< FFmpegのライブラリをmacOSアプリで使う  TopPage  macOSのSpriteKitでマウスカーソルの位置を得る >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/1241-93c495de




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad