4

スーパービューからドラッグできるUIViewを実装しようとしています。

UIPanGestureRecognizerドラッグできるようにしたいビューにを追加してみました。ただし、UIViewをスーパービューから削除して別のビューに追加すると、ジェスチャレコグナイザーが機能しなくなるようです。

UIGestureRecognizerStateBeganコメントアウトされたコードを使用すると、他の2つのブロック内のコードは正しく機能しますが、元に戻すと、UIGestureRecognizerStateChanged状態とUIGestureRecognizerStateEnded状態が実現されません。

何が問題になっていますか?

if ([gr state] == UIGestureRecognizerStateBegan)
{
    CGPoint newCenter = [endView convertPoint:[self center]
                                     fromView:startView];
    [self removeFromSuperview];
    [endView addSubview:self];
    [self setCenter:newCenter];

}

if ([gr state] == UIGestureRecognizerStateChanged)
{
    // Some code that successfully moves the view.
}

if ([gr state] == UIGestureRecognizerStateEnded)
{
    // Other code.
}
4

1 に答える 1

5

あなたは正しいと推測し、[self removeFromSuperview]ジェスチャ認識エンジンを壊します。私は同じ問題を抱えていました。[self removeFromSuperview]UIView は 1 つのビューのサブビューにしかできないため、この行にコメントを付けて問題ありません。スーパービューから削除する必要はありません。

于 2012-08-28T14:21:57.103 に答える