UIScrollView拖动subrules subview touchesBegan

时间:2014-06-24 11:00:49

标签: ios objective-c uiscrollview touchesbegan

所有

我已经在stackoverflow和其他网站上阅读了很多答案,并尝试了很多可能的解决方案,但都没有。

我有一个带有子视图的UIScrollView(boardScrollView),它是backgroundimage(boardImage):

UIImage *image = [UIImage imageNamed:@"greyblue_numbered_15x15_900x900.png"];
self.boardImage = [[UIImageView alloc] initWithImage:image];
self.boardImage.frame = (CGRect){.origin=CGPointMake(0.0f, 0.0f), .size=image.size};
[self.boardScrollView addSubview:self.boardImage];
self.boardScrollView.contentSize = image.size;

我已经实现了touchesBegan和touchesEnded以在UIScrollView上拖放另一个子视图:

- (void)myTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    CGPoint touchPointScreen = [[touches anyObject] locationInView:self.view];
    CGPoint touchPointImage  = [[touches anyObject] locationInView:self.boardImage];

 if (touchPointScreen.x > self.boardScrollView.frame.origin.x &&
     touchPointScreen.x < self.boardScrollView.frame.origin.x + self.boardScrollView.frame.size.width &&
     touchPointScreen.y > self.boardScrollView.frame.origin.y &&
     touchPointScreen.y < self.boardScrollView.frame.origin.y + self.boardScrollView.frame.size.height)
    {
        self.tmpDragObject.frame = CGRectMake(x,y,60,60);

        [self.boardImage addSubview:self.tmpDragObject];
    }
  self.tmpDragObject = nil;
}

拖动的子视图将被删除在imageview上。我可以放大和缩小,子视图也会重新定位。

当缩小滚动视图时,这非常有效。当我进行拖动动作时,子视图会在滚动视图上拖动。

但是当我放大滚动视图然后尝试拖动删除的子视图时,touchesBegan被scrollViewWillBeginDragging方法推翻,因此滚动视图滚动,但子视图未被拖动.. 不知何故,拖动否决了touchesBegan方法。 因为当我只触摸时,会调用子视图的touchesBegan方法。但是当我进行拖动动作时,会调用UIScrollView中的拖动方法。

当我从子视图的位置拖动滚动视图时,如何同时使滚动视图中的拖动和子视图中的touchesBegan工作?

我已经设置了

self.boardScrollView.canCancelContentTouches = NO;
self.boardScrollView.userInteractionEnabled = YES;

和子视图

self.exclusiveTouch = YES;
self.userInteractionEnabled = YES;

我在这里缺少什么?

0 个答案:

没有答案