(iphone)uiScrollView灵敏度?

时间:2011-01-31 07:51:33

标签: iphone uiscrollview scroll

我对uiscrollview有2个问题。

第一个问题:

我在uiscrollview(屏幕底部)上有图像视图,并允许用户将图像视图拖出uiscroll视图。
我将手指放在imageView的顶部以将其拖出,但是uiscrollview会触摸并滚动。

我想我需要先让imageView获取触摸事件(如果触摸事件发生在imageView上) 如果手指方向几乎是水平的,则将触摸事件提供给scrollview以便它可以滚动,否则(手指方向不是水平的)让用户拖动imageView。

(我有scrollView.directionalLockEnabled = YES) 我想知道如何做到这一点?

第二个问题:

用户可以通过双击imageView将imageView发送回uiScrollView 当我这样做时,滚动视图不可滚动,直到我在scrollView中拖出任何imageViews 不知道是什么导致了这个问题..

以下是将imageView发送回uiscrollview的代码。

   aDragView.userInteractionEnabled = NO;
    CGPoint contentOffset = self.puzzlePieceScrollView.contentOffset;
    float x = contentOffset.x;

    int addIndex = x / widthWithPadding;
    aDragView.scrollContainerIndex = addIndex;

    CGRect newFrame;
    int puzzlePieceCount = 0;
    [UIView beginAnimations:@"addDragView" context: [aDragView retain]];

    for(UIView* subview in [self.puzzlePieceScrollView subviews])
    {
        if([subview isKindOfClass: [DragView class]])
        {
            DragView* dragView = (DragView*)subview;
            if(dragView.scrollContainerIndex >= addIndex)
            {
                dragView.scrollContainerIndex += 1;
                newFrame = dragView.frame;
                newFrame.origin.x += widthWithPadding;
                dragView.frame = newFrame;
            }
            ++puzzlePieceCount;
        }
    }

    newFrame = aDragView.frame;
    newFrame.origin.x = [self getOriginXForScrollIndex: addIndex];
    newFrame.origin.y = self.frame.origin.y + upperPadding;

    aDragView.frame = newFrame;

    [UIView setAnimationDuration:0.3];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector:@selector(animationFinished:finished:context:)];
    [UIView commitAnimations];

    float newWidth = std::max((puzzlePieceCount+1) * widthWithPadding, [[UIScreen mainScreen] bounds].size.width );
    CGSize newContentSize = self.puzzlePieceScrollView.contentSize;
    newContentSize.width = newWidth;
    self.puzzlePieceScrollView.contentSize = newContentSize;


- (void) animationFinished:(NSString*)animationId finished:(BOOL)finished context:(void*)context
{   
    if ([animationId isEqualToString:@"addDragView"])
    {
        DragView* aDragView = (DragView*)context;
        // add to puzzlePieceScrollView                                                                                                                                                                                                                                       
        CGPoint p;
        p = CGPointMake(aDragView.bounds.size.width * 0.5, aDragView.bounds.size.height * 0.5);
        CGPoint newCenter = [aDragView convertPoint: p toView: self.puzzlePieceScrollView];
        aDragView.center = newCenter;

        [self.puzzlePieceScrollView addSubview: aDragView];
        aDragView.userInteractionEnabled = YES;
        [aDragView release];
    }

    self.puzzlePieceScrollView.userInteractionEnabled = YES;
}

0 个答案:

没有答案