我想有一个视图,其中有车辆行驶,用户也可以拖放.你认为这样做的最好的大规模战略是什么?最好是从代表车辆的视图中获取touch 事件,还是从更大的视图中获取?您是否对拖放使用过的简单范例感到满意?不同策略的缺点是什么?

推荐答案

假设你有一个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];

然后,您可以通过响应UIControlEventTouchDragInside事件,将车辆移动到任何地方,例如:

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

与整体管理场景相比,单独的车辆处理自己的拖拽要容易得多.

Ios相关问答推荐

如何在SwiftUI中扩展双击的可检测区域?

Xamarin Forms CustomPin iOS Render

有没有办法将滚动视图RTL(阿拉伯语)与Ltr动画一起使用?

objc[25442]:Swift类的扩展和类别不允许有+load方法

如何在expo-react native中从ios平台中排除包

如何在Combine发布者之间强制执行最小延迟

ionic 4 - 编译 ios - 来自项目Pods的目标GoogleDataTransport中的问题

为什么这个 SwiftUI 状态在作为非绑定参数传递时没有更新?

Task.cancel() 的 TaskPriority 的区别

async/await、Task 和 [weak self]

本月使用 iOS 的天数?

UICollectionView - 动态单元格高度?

构建失败:ld:重复符号 _OBJC_CLASS_$_Algebra5FirstViewController

iOS Swift - 获取当前本地时间和日期时间戳

如何以编程方式切换 UISegmentedControl?

如果已安装,则重定向到应用程序,否则重定向到 App Store

如何关闭 iOS 键盘?

如何计算 Swift 数组中元素的出现次数?

快速从 NSTimeInterval 转换为小时、分钟、秒、毫秒

从故事板导航到其他 Swift 1.2 文件时 Xcode 6.3 崩溃