在UIViews之间拖动副本

时间:2011-09-13 23:52:11

标签: objective-c ios cocoa-touch uiview

我基本上是在尝试执行this question中涵盖的内容,但是请复制而不是移动。

以下是视图层次结构的外观(从现有问题复制)。 A B 都在常见的超级视图中。 X A 内的视图。

  A        B
_____    _____
|   |    |   |
| X | -> |   |
|___|    |___|

我想将 X 复制到 B A 是可用商品的列表。我想从 A 中选择一项,并将其副本添加到 B

这是我到目前为止所提出的。在 X 中检测到触摸后,我制作了一个视图副本(viewCopy)。然后我将viewCopy添加到A并将原始视图添加到 A B 的超级视图中。这是因为触摸可能在原始视图上处于活动状态,而不在复制的视图上。我希望新的(复制的)视图响应拖动,以便从 A 平滑过渡到 B

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{        
    id viewCopy = [self mutableCopy];
    [self.superview.superview addSubview:self];
    [self.superview addSubview:viewCopy];
    [viewCopy release];
}

这显然不起作用。这是一个非常粗略的尝试,但我不知道如何去做这件事。任何帮助都会很棒。感谢。

1 个答案:

答案 0 :(得分:0)

UIView不遵守NSCopying协议,因此尝试复制它可能会失败 - 它会击中基础NSObject -mutableCopy,它不能满足您的需求。要获取克隆视图,您必须重新创建它。最简单的方法是设置X视图,以便从XIB加载或将其实现为可以设置自己内容的自定义UIView子类。

有关前者的示例,请查看the docs;该示例用于加载自定义表格视图单元格,但该技术可轻松应用于通用自定义视图。