1

アプリで UIDynamics を使用しています。私のアプリには2つの正方形があります。1 つは固定され、もう 1 つは (パン ジェスチャを適用して) 移動できます。それらを衝突させようとしても、衝突しません。デリゲート メソッドが呼び出されることはありません。これが私のコードです。誰かが問題を指摘してくれることを願っています。

    UIDynamicAnimator* animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
  UICollisionBehavior* collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[self.square1, self.square2]];
    collisionBehavior.translatesReferenceBoundsIntoBoundary = YES;

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [self.square1 addGestureRecognizer:pan];
    [collisionBehavior setCollisionMode:UICollisionBehaviorModeEverything];
    [animator addBehavior:collisionBehavior];
    collisionBehavior.collisionDelegate = self;
4

4 に答える 4

0

UIDynamics に何らかのバグがあると思います (ただし、100% 間違いがあるとは限りません)。UIDynamicAnimator と UIGravityBehavior のインスタンス変数を作成するまで、動的な作業を行うことができませんでした。次のように、クラス拡張子の .m ファイルにインスタンス変数を追加してみてください。

UIDynamicAnimator* animator;
UICollisionBehavior* collisionBehavior;

そして、コードの最初の 2 行を次のように変更します。

animator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
collisionBehavior = [[UICollisionBehavior alloc] initWithItems:@[self.square1, self.square2]];

それは役立つはずです。

于 2013-12-25T13:26:44.850 に答える
0

衝突クラスの「addBoundaryWithIdentifier」を使用して境界を指定し、動かないアイテムを衝突から削除する必要があります

于 2014-03-08T09:07:03.533 に答える