我实际上是在尝试做这个问题所涵盖的内容,但是复制而不是移动。
下面是视图层次结构的样子(从现有的问题中复制)。A和B都在同一个父视图中。 X 一个视图在的。
A B
_____ _____
| | | |
| X | -> | |
|___| |___|
<<p>我想拷贝strong> X 到 B 。是可用项的列表。我想从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];
}
这显然不起作用。这是一个非常粗糙的尝试,但我不知道该怎么做。任何帮助都太好了。谢谢。
UIView不遵守NSCopying协议,所以试图复制它很可能会失败——它击中了基础NSObject -mutableCopy
,它不做你想要的。要获得克隆视图,您必须重新创建它。处理这个最简单的方法是设置你的X视图,这样它可以从XIB加载,或者实现它作为一个自定义的UIView子类,可以设置自己的内容。
对于前者的示例,请查看文档;这个例子是用来加载自定义表格视图单元格的,但是这种技术很容易适用于一般的自定义视图。