Luk*_*uke 93 iphone drag-and-drop touch ipad ios
我希望有一个视图,其中有车辆行驶,用户也可以拖放.您认为这样做的最佳大规模战略是什么?是否最好从代表车辆的视图或更大的视图中获取触摸事件?有没有一个简单的范例,你用来拖放你满意吗?不同策略的缺点是什么?
ohh*_*hho 126
假设你有一个UIView带有背景图像的场景和很多vehicles,你可以将每辆新车定义为UIButton(UIImageView也可能有效):
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(imageTouch:withEvent:) forControlEvents:UIControlEventTouchDown];
[button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside];
[button setImage:[UIImage imageNamed:@"vehicle.png"] forState:UIControlStateNormal];
[self.view addSubview:button];
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过响应UIControlEventTouchDragInside事件将车辆移动到任何地方,例如:
- (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event
{
CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
UIControl *control = sender;
control.center = point;
}
Run Code Online (Sandbox Code Playgroud)
与管理整个场景相比,单个车辆处理自己的拖车要容易得多.
Jak*_*lik 34
除了ohho的答案,我尝试过类似的实现,但没有"快速"拖动和居中拖动的问题.
按钮初始化是......
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragInside];
[button addTarget:self action:@selector(imageMoved:withEvent:) forControlEvents:UIControlEventTouchDragOutside];
[button setImage:[UIImage imageNamed:@"vehicle.png"] forState:UIControlStateNormal];
[self.view addSubview:button];
Run Code Online (Sandbox Code Playgroud)
和方法实现:
- (IBAction) imageMoved:(id) sender withEvent:(UIEvent *) event
{
UIControl *control = sender;
UITouch *t = [[event allTouches] anyObject];
CGPoint pPrev = [t previousLocationInView:control];
CGPoint p = [t locationInView:control];
CGPoint center = control.center;
center.x += p.x - pPrev.x;
center.y += p.y - pPrev.y;
control.center = center;
}
Run Code Online (Sandbox Code Playgroud)
我不是说,这是答案的完美解决方案.不过我发现这是最简单的拖动解决方案.
| 归档时间: |
|
| 查看次数: |
73520 次 |
| 最近记录: |