如何在Xcode中跟踪多个触摸
最近我正在创建一个可以同时拖动多个对象的应用程序。 我曾尝试使用UIPanGestureRecognizer
来获取手指触摸的坐标,但我不知道哪个触摸属于哪个手指。
我需要支持四个手指同时平移而不会使用Objective-C相互干扰。
我已经搜索了一段时间的洗液,但他们显示的答案对我不起作用。 任何帮助,将不胜感激。
我在相当长的一段时间内遇到了同样的问题并最终解决了它。 以下是我的DrawView.m
的代码,它是UIView
的子类,能够使用drawRect:
支持绘图drawRect:
。
#import "DrawView.h" #define MAX_TOUCHES 4 @interface DrawView() { bool touchInRect[MAX_TOUCHES]; CGRect rects[MAX_TOUCHES]; UITouch *savedTouches[MAX_TOUCHES]; } @end @implementation DrawView -(id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { // Initialization code self.multipleTouchEnabled = YES; for (int i=0; i
我将MAX_TOUCHES
设置为4,因此屏幕上会有四个对象。 这个的基本概念是在调用touchesBegan::
时将每个UITouch
ID存储在savedTouches
数组中,然后在touchesMoved::
called时将每个ID与屏幕上的触摸进行比较。
只需将代码粘贴到.m
文件中即可。 示例结果如下所示:
希望这可以帮助 :)
- ABAddressBookCopyArrayOfAllPeople返回设备上的空数组
- iOS 8上的NSRangeException
- 在整个iOS应用程序中共享string和variables
- didMoveToWindow:如何调用这个方法?
- Swift World:设计模式-中介者
- CoreBluetooth didDiscoverPeripheral不在Swift中调用
- 用Swift生成base64 url编码的X.509格式的2048位RSA公钥?
- 在canEditRowAtIndexPath方法,UITableView reloadData不能正常工作?
- 编译iOS的Qt(UIKit灯塔)第2部分