0

いくつかのイベントでこれらのメソッドを呼び出そうとしています:

        -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

  -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

しかし、パラメーターを入力する方法がわかりません: 1 - (NSSet *)touches 2 - withEvent:(UIEvent *)event

(void)touchesEnded および (void)touchesMoved: (and - (void)touchesBegan) を呼び出すサンプル パラメータを提供してくれる人はいますか

4

2 に答える 2

0

これらのメソッドは、システムによって自動的に呼び出されます。それらを直接呼び出すことはありません。

あなたがすべきこと、まあそれはあなたの目標に依存します。タッチを「シミュレート」したいだけの場合は、ヘルパーメソッドを用意してください。次に、touchesXXXXにそれらを直接呼び出してもらいます。

UITouchオブジェクトを作成するためのAPIを取得していないため、それらの情報を保持したい場合は、それらをミラーリングする必要があります。何かのようなもの...

@interface MyTouch : NSObject {
UITouchPhase phase
NSUInteger tapCount
NSTimeInterval timestamp
UIView *view
UIWindow *window
CGPoint locationInView;
CGPoint locationInWindow;
@end

次に、このような方法を使用できます...

- (void)handleTouches:(NSSet*)touches {
}

touchsはMyTouchオブジェクトのセットでした。

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // For UITouch in touches, create a MyTouch, and add it to your own
    // collection of touches.

    [self handleTouches:myTouches];
}

touchesXXXXメソッドごとにこれを行った場合、それぞれが処理を独自のメソッドに渡します。

これを行うことで、独自のタッチオブジェクトの作成を制御できます。任意のビューまたはパターンに合わせて構成することができます。次に、他のコードで、MyTouchオブジェクトのコレクションを作成し、それらを使用してhandleTouches:を呼び出すことができます。

touchesXXXXメソッドが特別なオブジェクトを作成し、それらをメソッドに渡す限り、システムがタッチを生成する場合でも、シミュレートする場合でも、まったく同じ動作をすることができます。

さて、あなたが得られないのは、システムイベントの自動生成です。

そのパフォーマンスに夢中になっている場合は、余分なセットやオブジェクトの作成を回避する簡単な方法がありますが、それはあなたの質問ではありません。

于 2012-04-19T15:50:55.017 に答える
0

UITouch と UIEvent のパブリック コンストラクターがないため、タッチ メソッドに必要なパラメーターを生成できません。

dasblinkenlight が言ったように、あなたの問題に対する別のアプローチが確かにあるかもしれません。しかし、現在のアプローチは絶対に不可能です。

于 2012-04-19T13:52:49.553 に答える