2013-10-24 50 views
1

请帮助我,我面临非常危急的情况, 用拖动视图在scrollView的子视图里面。ios在scrollview的子视图内拖放视图

了:)我有滚动视图(让我们命名一个),这其中涵盖整个滚动视图的视图(让我们B键)内,现在'B'包含225子视图(15 * 15) (称为目标视图)。

b :)我刚低于 7子视图(称为瓦片),每个瓦片驻留的视图(称为tileContaner视图)内另一视图。

问题? 1.当我拖动瓦片B的子视图(目标视图)它消失。

要求。 将瓦片容器中的平铺视图放置在滚动视图的目标视图B的瓦片相交目标的子视图中。

+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作为你的添加来查看你的坐标。 – BooRanger

+0

@Boo:添加ileView.frame = CGRectMake(0,0,20,20)后不工作。 –

+0

然后将它作为前景,并在它与任何子视图相交时检查[A子视图]的再次交集点,然后将拖动视图添加为相交视图的子视图。 –

回答

0

用这种方法删除[tileView removeFromSuperview];因为它实际上删除了tileView。

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

谢谢。

+0

我评论这些线,但仍然得到相同的issu –

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具有相同的X和Y的TargetView但你添加到目标视图。我想你想把它放在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." 
+0

没有BooRanger,这样做后它不工作 –

+1

你删除[tileView removeFromSuperview];但你不是重新初始化它,所以它可能没有检查它。 –

+0

嗯不幸,在调试笔记也许尝试targetView.clipsToBounds = NO;并让你的tileView看到一些鲜艳的颜色。 – BooRanger