2

iOS では、2 つの親 UIView の間で UIView をドラッグしています。ドラッグを管理するために UIPanGestureRecognizer を使用しています。ドラッグがまだ続いている間に、次を使用してドラッグ中のビューの親を切り替えます。

- (IBAction)handlePanGesture:(UIPanGestureRecognizer *)sender {
    ...
    [viewBeingDragged removeFromSuperview];
    UIView* page2 = [self.view viewWithTag:pageTag];
    [page2 addSubview:viewBeingDragged];
    // Now scroll page 2 into view
    [pageContainerScrollView setContentOffset:CGPointMake(xcoord, 0) animated:YES];
    ...

これにより、パン イベントが終了するようです。しかし、私の指はまだ「下」です。この時点で、指が上がっていることをどのように検出できますか? 別の UITapGestureRecognizer を試してみました。これは、パンが行われていない場合は正常に起動しますが、パンが開始された場合は起動しません。

何か案は?

4

2 に答える 2

0

これを試して:

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

    UIPanGestureRecognizer *recognizer;
    recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanFrom:)];        
    [self addGestureRecognizer:recognizer];
}

-(void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {

    if ( [recognizer state] == UIGestureRecognizerStateEnded )
    {
        NSLog(@"Ended");
    }
}

ここですべての州を見つけることができます:

それが役に立てば幸い。

于 2012-06-15T14:52:14.853 に答える
0

私は同じ問題を抱えていました。次の行を削除するだけです[viewBeingDragged removeFromSuperview];

UIView はスーパービューを 1 つしか持つことができないため[page2 addSubview:viewBeingDragged]viewBeingDraggedUIView を呼び出すと、最初に現在のスーパービューから削除されます。

于 2012-08-28T14:25:24.467 に答える