-1

GameViewControllerというビューがあります。設定していませんが、EAGLビューが埋め込まれたUIKitビューのようです。

GameViewControllerでタップおよびスワイプするためのジェスチャレコグナイザーを設定しました。タップのセレクターとして設定したメソッド(GameViewController内の関数)がtouchesBeganではなくtouchesEndedで呼び出されることを除いて、これらはうまく機能します。

touchesBegan関数を取得する唯一の方法は、サブクラス化することです。

そこで、UITapGestureRecognizerをサブクラス化し、touchesBegan関数を作成すると、そこにあるNSLogがタッチダウン時に呼び出されます。ただし、UITapGestureRecognizerサブクラスからGameViewControllerの関数を呼び出すことはできません。(クラスメソッド+ METHODIWANTTOCALLが見つかりません)。

前後に「参照」が必要だと気づきましたが、どうすればよいでしょうか。それとも、これは完全に間違ったアプローチですか?委任しますか?(私はそれに慣れていません)このUITapGestureサブクラスから呼び出されるGameViewController内のメソッドを持つための最良の方法は何ですか?

4

1 に答える 1

1

あなたの GameViewController はシングルトン クラス (アプリ内のこのクラスのインスタンスは 1 つだけ) のようです。シングルトンのインスタンスを返すクラス メソッドを GameViewController に含めることができます。次に、定期的にメソッドを実行できます。

レコグナイザーで: GameViewController* myController = [GameViewController getInstance]; [myController handleTouchBegin];

または、内部状態を知る必要がない場合は、handleTouchBegin をクラス メソッドとして定義できます。

[GameViewController handleTouchBegin];

于 2012-05-24T00:50:14.373 に答える