Hap*_*per 2 iphone multi-touch touch ipad ios
我正在尝试为我的视图实现UIPanGestureRecognizer.如何添加多点触控?下面是我视图中的代码(UIView的子类).我希望能够同时知道所有触摸的位置和速度.当前代码仅打印一次触摸的位置和速度.更改属性minimumNumberOfTouches和maximumNumberOfTouches不起作用.非常感谢您的帮助.
UIPanGestureRecognizer *panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)];
panGestureRecognizer.cancelsTouchesInView = NO;
[self addGestureRecognizer:panGestureRecognizer];
- (void)handlePanGesture:(UIPanGestureRecognizer *)panGestureRecognizer
{
CGPoint location = [panGestureRecognizer locationInView:panGestureRecognizer.view];
CGPoint velocity = [panGestureRecognizer velocityInView:panGestureRecognizer.view];
NSLog(@"Location: %@", NSStringFromCGPoint(location));
NSLog(@"Velocity: %@", NSStringFromCGPoint(velocity));
}
Run Code Online (Sandbox Code Playgroud)
来自UIGestureRecogniser的苹果文档
(CGPoint)locationOfTouch:(NSUInteger)touchIndex inView:(UIView*)视图 参数touchIndex接收方维护的专用数组中UITouch对象的索引.该触摸对象表示当前手势的触摸.view发生手势的UIView对象.指定nil以指示窗口.返回值视图的局部坐标系中的一个点,用于标识触摸的位置.如果为视图指定了nil,则该方法返回窗口基本坐标系中的触摸位置.
(NSUInteger)numberOfTouches 返回值接收方维护的专用数组中的UITouch对象数.这些对象中的每一个表示当前手势中的触摸.
讨论 在循环中使用此方法返回的值,您可以使用locationOfTouch:inView:方法询问各个触摸的位置.
例如:
for(int i=0; i<[panGestureRecogniser numberOfTouches]; i++)
{
CGPoint pt = [panGestureRecogniser locationOfTouch:i inView:self];
}
Run Code Online (Sandbox Code Playgroud)
至于速度,我相信它只有一个值,并且没有办法在不编写自定义方法的情况下获得每次触摸的速度,该方法计算一系列调用中每次触摸之间的差异.然而,无法保证每次触摸都在相同的索引处.
注意:对于最小和最大触摸次数,需要相应地设置这些触摸以获得多次触摸.
| 归档时间: |
|
| 查看次数: |
2247 次 |
| 最近记录: |