0

単純な問題だと思いますが、私のビューで何が起こっているのか理解できませんでした。次のように、UIViewController によって起動された OpengGL ビューを表示しています。

  //OpenGL view init
CGRect mainframe=CGRectMake(0,0,768,708);
GLView= [[OpenGLView alloc] initWithFrame:mainframe];

それでうまく表示されますが、このビューで関数を呼び出すためにスワイプジェスチャ認識エンジンを追加しようとしました:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {

        ...  

        oneFingerSwipeRight =[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(transitionCubeRight:)];
        oneFingerSwipeRight.direction=UISwipeGestureRecognizerDirectionRight;

        oneFingerSwipeLeft =[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(transitionCubeLeft:)];
        oneFingerSwipeLeft.direction=UISwipeGestureRecognizerDirectionLeft;

        [self addGestureRecognizer:oneFingerSwipeRight];
        [self addGestureRecognizer:oneFingerSwipeLeft];

        ...
    }
    return self;
}

そして、ビューが表示されたら、右または左にスワイプするアクションを実行しています。これがターミナルに表示されます。

2012-04-17 12:00:15.735 MultipleViewsApp[4372:f803] -[OpenGLView transitionCubeLeft:]: インスタンス 0xcd38bd0 に送信された認識されないセレクター 2012-04-17 12:00:15.736 MultipleViewsApp[4372:f803]キャッチされていない例外 'NSInvalidArgumentException' が原因でアプリを終了しています。理由: '-[OpenGLView transitionCubeLeft:]: 認識されないセレクターがインスタンス 0xcd38bd0 に送信されました' First throw call stack: (0x1764052 0x18f5d0a 0x1765ced 0x16caf00 0x16cace2 0x622e39 0x622143 0x6233cf 0x625a31 0x62598c 0x61e3e7 0x386812 0x386ba2 0x36d384 0x360aa9 0x293dfa9 0x17381c5 0x169d022 0x169b90a 0x169adb4 0x169accb 0x293c879 0x293c93e 0x35ea9b 0x2518 0x2475)

私の関数「transitionCubeLeft」/「transitionCubeLeft」にはNSLOGだけが含まれていますが、これに関連するものは他にありません。誰かがこの問題を理解するのを手伝ってくれたら、とても感謝しています。ありがとう

4

2 に答える 2

2

transitionCubeLeftメソッドを定義していないと思います。使用しているセレクターに応じて、それが定義されているかどうか、およびメソッドのパラメーターの数が 1 であるかどうかを調べてみてください。

于 2012-04-17T11:41:17.170 に答える
1

transitionCubeLeftパラメータなしで/transitionCubeRight定義されているようです。

変化する

 oneFingerSwipeRight =[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(transitionCubeRight:)];
 oneFingerSwipeRight.direction=UISwipeGestureRecognizerDirectionRight;

 oneFingerSwipeLeft =[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(transitionCubeLeft:)];
 oneFingerSwipeLeft.direction=UISwipeGestureRecognizerDirectionLeft;

 [self addGestureRecognizer:oneFingerSwipeRight];
 [self addGestureRecognizer:oneFingerSwipeLeft];

 oneFingerSwipeRight =[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(transitionCubeRight)];
 oneFingerSwipeRight.direction=UISwipeGestureRecognizerDirectionRight;

 oneFingerSwipeLeft =[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(transitionCubeLeft)];
 oneFingerSwipeLeft.direction=UISwipeGestureRecognizerDirectionLeft;

 [self addGestureRecognizer:oneFingerSwipeRight];
 [self addGestureRecognizer:oneFingerSwipeLeft];
于 2012-04-17T11:54:50.930 に答える