ios在scrollview的子视图中拖放视图

时间:2013-10-24 10:20:03

标签: ios6 scrollview

请帮助我,我面临非常危急的情况, 在scrollView的子视图中拖动视图。

a:)我有滚动视图(让我们的名字A ),在这里面是一个覆盖整个滚动视图的视图(让我们打电话给B ),现在'B'包含225个子视图(15 * 15)(称为目标视图)。

b:)我在 A 下面有另一个视图,其中包含7个子视图(称为图块),每个图块都位于视图中(名为 tileContaner View )。

问题? 1.当我在 B 的子视图(目标视图)内拖动图块时,它会消失。

要求。 将瓷砖容器中的平铺视图放置在scrollview的目标视图 B 的子视图中,其中Tile与Target相交。

2 个答案:

答案 0 :(得分:0)

在此方法中删除[tileView removeFromSuperview];因为它实际上删除了tileView。

-(void)placeTile:(TileView*)tileView atTarget:(TargetView*)targetView {
[UIView animateWithDuration:0.35 delay:0.00 options:UIViewAnimationOptionCurveEaseOut animations:^{
}

感谢。

答案 1 :(得分:0)

//根据我的评论构建

在c部分你有,tileView.frame = CGRectMake(targetView.frame.origin.x,targetView.frame.origin.y,20,20);我认为,因为你正在做targetView.frame.origin.x,targetView.frame.origin.y它只是把它放在屏幕上。我认为它应该是0,0作为你的添加来查看你的坐标。

 -(void)placeTile:(TileView*)tileView atTarget:(TargetView*)targetView {
           [UIView animateWithDuration:0.35 delay:0.00 options:UIViewAnimationOptionCurveEaseOut animations:^{

                 [tileView removeFromSuperview];
                 tileView.frame=CGRectMake(targetView.frame.origin.x, targetView.frame.origin.y, 20, 20);
                 [targetView addSubview:tileView];
                 NSLog(@"%f,%f,%f,%f",tileView.frame.origin.x,tileView.frame.origin.y,tileView.frame.size.width,tileView.frame.size.height);
                 [tileView bringSubviewToFront:targetView];

             }
             completion:^(BOOL finished){
            }];

将tileview设置为与targetView具有相同的x和y,但是添加到目标视图。我认为你想把它放在0,0或者转换点。

       [UIView animateWithDuration:0.35 delay:0.00 options:UIViewAnimationOptionCurveEaseOut
       animations:^{

             tileView.frame=CGRectMake(0, 0, 20, 20);
             [targetView addSubview:tileView];
         }
         completion:^(BOOL finished){
        }];

编辑:

iMobile提出了一个很好的观点,来自苹果的文档说addSubview在添加之前已经删除了视图。

  "Views can have only one superview. If view already has a superview and that view is
   not the receiver, this method removes the previous superview before making the 
   receiver its new superview."