我正在努力将UILabel
从一个UIView
拖放到另一个UIView
。请检查以下代码:
CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
UIControl *control = sender;
control.center = point;
使用此代码我无法正确拖动。
答案 0 :(得分:5)
子视图无法跳出其子视图并自行移动到其他视图中。
您需要做的是在touchesBegan
中删除其parentView中的标签。将anotherLabel精确地添加到同一位置,但在视图中是两个视图的超视图(要拖放和放入)。
现在在touchesMoved
。根据触摸位置移动它。
在touchesEnd
。找到位置并在您的视图上循环,找到用户拖动它的视图,并在该位置添加新标签作为子视图。
更新基本代码(修复任何语法错误)
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
//get position
// get label on that position
[label removeFromSuperView];
newLabel = [[UILabel alloc] init]; //make newLabel iVar
newLabel.textColor = label.textColor ; // etc copy values
[self.view addSubView:newLabel]; //positioned at label
}
touchesMoved {
//getPosition
newLabel.position = position;
}
touchesEnded {
//getPosition.
self.view.subviews; // loop and find which view has the position.
UILabel *finalLabel = [[UILabel alloc] init];
finalLabel.center = newLabel.center;
[newLabel removeFromSuperView];
[ViewToBeDropped addSubview:finalLabel];
}