1

NSView のサブクラスである myGameTile の 25 タイルのゲームボードがあります。mouseDown: クリックしたタイルを特定し、ivar を代表的な値に設定したいと考えています。

たとえば、タイル 12 をクリックした場合、clickedTile を「12」またはその特定のインスタンスを一意に表す値に設定します。

私は整数値 12 からある種の内省/反省まで何でも開いていますが、ハック、ランタイム ラッパー、および変更よりも組み込みの機能とエレガンスが望ましいです。それでも、それらの解決策に頼らざるを得ないことも承知していますので、そちらも併せて回答お願いします。すべてのオプションを知りたいです。ありがとう!

4

3 に答える 3

5

ドキュメントに書かれているように、NSView をサブクラス化し、タグ メソッドをオーバーライドできます。

于 2009-06-25T17:13:22.997 に答える
0

hitTest: はあなたが望むことをすると思います。このようなもの:

- (void)mouseDown:(NSEvent *)theEvent {
    NSPoint aPoint = [theEvent locationInWindow];
    NSView* viewHit = [self hitTest:aPoint];
    if( viewHit != nil && viewHit != self ) {
        // viewHit is our tile.
    }
}
于 2009-06-25T17:54:28.887 に答える