在另一个元素上拖动UICollectionViewCell

时间:2013-10-06 11:32:23

标签: ios drag-and-drop uicollectionview uicollectionviewcell cliptobounds

我想在另一个UIView或其他元素上拖动UICollectionViewCell。 我已经创建了UICollectionViewCell的子类。

这是我的单元类,UICollectionViewCell的子类:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    self.dragObject=self;
    self.homePosition = CGPointMake(self.frame.origin.x,
                                        self.frame.origin.y);
    [self.superview.superview bringSubviewToFront:self];
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    CGPoint touchPoint = [[touches anyObject] locationInView:self.superview];
    CGRect newDragObjectFrame = CGRectMake(touchPoint.x - touchOffset.x,
                                           touchPoint.y - touchOffset.y,
                                           self.frame.size.width,
                                           self.frame.size.height);
    self.frame = newDragObjectFrame;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{


            CGRect newFrame =  CGRectMake(self.homePosition.x, self.homePosition.y,
                                          self.frame.size.width,
                                          self.frame.size.height);


            [UIView animateWithDuration:0.2
                             animations:^{
                                 self.frame = newFrame;
                             }];

}

enter image description here

我可以在UICollectionView中拖放任何UICollectionViewCell。但是我不能在屏幕上的另一个元素上拖动一个单元格。例如,另一个UICollectionView或UIView。

如果我将clipToBounds属性设置为“false”,那么我可以在任何地方拖动一个单元格,但它不会隐藏溢出内容,如滚动单元格。

在此图片中, clipToBounds = false:

enter image description here

1 个答案:

答案 0 :(得分:1)

我不知道是否可能,但为什么你不只是把UIView放在UICollectionViewCell上并拖动这个UIView? 当用户尝试拖动单元格时,只需隐藏单元格并添加一个类似于单元格的UIView。