2

C4 をダウンロードしたばかりで、既にスワイプ ジェスチャが実行されているサンプル コードでピンチ ジェスチャを実行しようとしています。コードは次のとおりです。

[ball addGesture:SWIPERIGHT name:@"swipeR" action:@"swipeBall"];
[ball addGesture:PINCH name:@"pinch" action:@"zoomBall"];

PINCH を含む 2 行目を追加するとすぐに、コンパイル時に次のエラー メッセージが表示されます。これは、PINCH が以下のエラー メッセージに記載されているリストに記載されているため、奇妙に思えます。どうしたの?

エラーメッセージ:

2012-10-10 00:58:06.166 Test[24121:10703] *** Assertion failure in -[MyBall addGesture:name:action:], /Users/moi/Development/C4Installer/libC4/libC4/C4Control.m:319

2012-10-10 00:58:06.184 Test[24121:10703] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'The gesture you tried to use is not one of: TAP, PINCH, SWIPERIGHT, SWIPELEFT, SWIPEUP, SWIPEDOWN, ROTATION, PAN, or LONGPRESS'

*** First throw call stack: (0x320022 0x1730cd6 0x2c8a48 0x99c2cb 0xcdd3 0x380b 0x3190 0xe2b386 0xe2c274 0xe3b183 0xe3bc38 0xe2f634 0x3c2eef5 0x2f4195 0x258ff2 0x2578da 0x256d84 0x256c9b 0xe2bc65 0xe2d626 0x2d3d 0x2ca5) terminate called throwing an exception(lldb)

4

2 に答える 2

1

残念ながら、PINCH ジェスチャはまだ実装していません。変数は、プレースホルダーとして使用できます。うまくいけば、すぐにAPIに取り込めます。

于 2012-10-11T03:46:30.087 に答える
0

これで実装できたと思います。

c4CanvasController に入り、これを addGesture メソッドに追加しました。

case PINCH:
            recognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:NSSelectorFromString(methodName)];
            break;

次に、通常どおりジェスチャをプロジェクトに追加しました。

[self addGesture:PINCH name:@"pinchme" action:@"customPinchMethod:"];

ピンチ ジェスチャのコールバック メソッドに対して、ピンチとズームのような動作を定義しました。

    -(void)customPinchMethod:(UIPinchGestureRecognizer*)sender {
    NSLog(@"Pinching");

    NSLog(@"latscale = %f",mLastScale);

    mScale = sender.scale*mLastScale;
    if (sender.state == UIGestureRecognizerStateEnded) mLastScale = mScale;

    CGAffineTransform currentTransform = CGAffineTransformIdentity;
    CGAffineTransform newTransform = CGAffineTransformScale(currentTransform, mScale ,mScale);
    self.view.transform = newTransform; 

}

于 2014-01-21T00:13:05.910 に答える