我在一个iphone应用程序中实现了一个拖放系统。到目前为止,我设法实现了可拖动按钮,它工作得很好。这是我拥有的代码:
首先,我将操作分配给按钮:
[button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside];然后,我创建了拖拽:
- (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event
{
NSLog(@"moved");
CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
UIControl *control = sender;
control.center = point;
}然而,我想要实现的是,被拖动的按钮不会从它所在的位置移走。所以我想到了一个解决方案,那就是创建一个类似于第一个按钮的新按钮,然后移动这个新创建的按钮。但我在实现这最后一部分时遇到了麻烦。有什么帮助吗?非常感谢!
发布于 2011-09-07 21:36:38
- (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;
}发布于 2014-01-03 19:47:46
要取消限制,您可以在源按钮上添加两个事件,如下所示:
[button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside];
[button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragOutside];这样,当您退出当前视图(您的按钮)的边界时,事件也将被触发,并且您将能够在superview周围移动新按钮。
https://stackoverflow.com/questions/7334605
复制相似问题