为什么我的观点在拖拽他人观点的同时落后于他人观点?

Why Are My Views Going Behind My Others Views While Dragging Them?

首先我将介绍上下文,尽可能清楚(如果需要,我可以添加一些屏幕截图)。

我实际上正在开发一款用于管理大量可拖动视图(称为 PostIts)的应用程序。这些 PostIts 存储在其他不可拖动的视图中。

想象一下,就像我有 2 个远处的盒子,里面有很多 PostIts:

| *  |                 |*  *|
|*  *|  <- distance -> | *  |
|____|                 |____|

我的问题: 当我开始将 PostIt 拖到实际包含它的视图中时,没有问题。 但是,当我试图走出实际视图去另一个视图(例如)时,PostIt 在遇到视图的边界时开始消失。

| *  |                    |*  *|
|*  *--> disappearing..   | *  |
|____|                    |____|

回到我的图像示例: 这就像当您从一个盒子里挑选一个 PostIt 并将其移动到里面时,一切都很好。但是当你走出盒子去另一个盒子时,PostIt 变得不可见 但你仍然拥有它 因为当你将不可见的 PostIt 放入另一个盒子时它会重新出现(我有一些方法可以按顺序重新加载框中的数据)。

| *  |                   |*  *|
|*  *--> disappearing --> *  *| ..reappearing
|____|                   |____|

我试过的方法:实际上我在 Z-index 中使用了一些东西,但这并不是很一致,我有很多错误:(这段代码是实际上在我的 UIPanGestureRecognizer)

if (recognizer.state == UIGestureRecognizerStateBegan) {
    CGPoint begin; // Creating a point because you can't directly change the x and t attribute of a point, you have to change the whole point
    begin = selectpostit.postItC.centerOfThePostit;
    begin.x -= _collectionView.contentOffset.x;
    begin.y -= _collectionView.contentOffset.y;

    selectpostit.center = begin;
}    
[self.view insertSubview:selectpostit aboveSubview:self.view];

这里还有 10 个不一致的尝试:

   CGPoint tmpPoint = selectpostit.center;
   [[UIApplication sharedApplication].keyWindow addSubview:selectpostit];
    selectpostit.center = tmpPoint;
    self.view.layer.zPosition=1;
    self.collectionView.layer.zPosition=1;
    selectpostit.layer.zPosition = 1;
   [self.view bringSubviewToFront:selectpostit];
   [_collectionView bringSubviewToFront:selectpostit];
   [selectpostit.superview bringSubviewToFront:selectpostit];
   [self.view insertSubview:selectpostit atIndex:1]; 

可能是这些方法我用的不好?

我的问题: 有没有一种简单的方法可以将一个视图放在 所有其他视图 的前面(绝对所有other) 当我们开始拖放时(所以有 UIPanGestureRecognizer) ?

PS: 里面应该有很多语法错误,sorry,我是法国人,解释起来有点复杂,没有错误,欢迎指正看到他们。

确保 PostIt 容器视图的 clipsToBounds 属性 没有值。