4

我正在尝试实现一个可以拖出其超级视图的 UIView。

我尝试将一个添加UIPanGestureRecognizer到我希望能够拖动的视图中。然而,似乎从其父视图中删除 UIView 并将其添加到另一个视图,正在破坏手势识别器。

UIGestureRecognizerStateBegan注释掉代码后,其他两个块中的代码可以正常运行,但是当我恢复它时,永远无法实现 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]应该没问题,你不必将它从superview中删除,因为 UIView 只能是一个视图的子视图。

于 2012-08-28T14:21:57.103 回答