拖放不删除UIButton

我正在实现一个iPhone应用程序的拖放系统。 到目前为止,我设法实现了可拖动的button,它工作正常。 这是我有的代码:

首先,我将这个动作分配给button:

[button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside]; 

然后,我创build拖动:

 - (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event { NSLog(@"moved"); CGPoint point = [[[event allTouches] anyObject] locationInView:self.view]; UIControl *control = sender; control.center = point; } 

但是,我想要实现的是被拖动的button不会从它所在的位置被删除。 所以我想到了一个解决scheme,就是创build一个类似于第一个button的新button,然后移动这个新创build的button。 但是我在执行这最后一部分时遇到了麻烦。 任何帮助? 非常感谢!

 - (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event { NSLog(@"moved"); CGPoint point = [[[event allTouches] anyObject] locationInView:self.view]; if (![self.view viewWithTag:11]) { NSData *archivedData = [NSKeyedArchiver archivedDataWithRootObject:(UIButton*)sender]; UIButton *anotherButton =(UIButton*) [NSKeyedUnarchiver unarchiveObjectWithData:archivedData]; anotherButton.tag = 11; UIImage *senderImage=[(UIButton *)sender imageForState:UIControlStateNormal]; CGImageRef cgImage = [senderImage CGImage]; UIImage *copyOfImage = [[UIImage alloc] initWithCGImage:cgImage]; [anotherButton setImage:copyOfImage forState:UIControlStateNormal]; [self.view addSubview:anotherButton]; } [self.view viewWithTag:11].center = point; } 

要删除限制,您可以在源button上添加两个事件,如下所示:

 [button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside]; [button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragOutside]; 

这样,当你退出当前视图(你的button)的界限时,事件也会被触发,你将能够在superview上移动新的button。