1

NSEventがあり、rectがクリックされたことを検出したいので、これが私が持っているコードです。

- (void)mouseDown:(NSEvent *)event;
{
    NSPoint clickedPoint = [event locationInWindow];
    //perform code for clickedPoint    
}

locationInWindowを使用する代わりに、長方形またはビューをNSPointに変換して、長方形をクリックしたかどうかを確認するにはどうすればよいですか?ありがとう!

4

1 に答える 1

3

まず、本当にオーバーライドしたいかどうか、mouseDown:またはオーバーライドmouseUp:がより良いオプションであるかどうかを検討します。このクリックがボタンのクリックのようなものである場合、ユーザーがマウスを離す前にボタンの長方形からマウスをドラッグして「気が変わる」ことができるように、一般的にはオーバーライドmouseUp:するよりもオーバーライドすることをお勧めします。mouseDown:mouseUp:

NSEventlocationInWindowは、ベースウィンドウの座標でのイベントの場所を示します。その場所をビューのローカル座標系に変換するには、次のようにNSViewconvertPoint:fromView:を使用できます。

- (void)mouseDown:(NSEvent *)event {
  NSPoint eventLocation = [event locationInWindow];
  NSPoint location = [self convertPoint:eventLocation fromView:nil];
  // handle the logic of what to do given the point
}

詳細については、「 Cocoaイベント処理ガイド:イベントの場所の取得」を参照してください。

于 2012-04-08T01:37:09.197 に答える