iPhone - 检测触摸并取消它们?

Posted

技术标签:

【中文标题】iPhone - 检测触摸并取消它们?【英文标题】:iPhone - Detecting touches and canceling them? 【发布时间】:2011-08-01 02:51:49 【问题描述】:

我正在检测我的 UIView 上的触摸。 在某些情况下,我想取消触摸,这样 touchesEnded 就不会被调用。但是无论 touchesEnded 总是会被调用吗?

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

   if (SOMETHING_SPECIAL)
   
      [super touchesCancelled:touches withEvent:event];
   


- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

   //I don't want it to get here if touches were canceled how can i do this?

- 在我的 touchesEnded 中,我如何确定触摸是否被取消?

【问题讨论】:

【参考方案1】:

TouchesEnded总是在您的触摸被取消与否的任何地方被调用,所以我建议改为使用那个确切的:

   if (SOMETHING_SPECIAL)
   

   

在你的:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event

【讨论】:

但是当触摸超出我的 UIView 框架时,我想取消触摸事件,但它没有这样做。这就是大多数 UI 元素的工作方式,我正在尝试遵循相同的模式 @Aryaxt 我明白你的意思,我不知道这是否可能。 我最终使用了一个 BOOL 标志,当触摸开始时我设置为 NO,当触摸移出视图边界时我设置为 YES。【参考方案2】:

要获取 touchesCancelled 事件,请从 UIResponder 实现此方法。

touchesCancelled:withEvent:.

【讨论】:

以上是关于iPhone - 检测触摸并取消它们?的主要内容,如果未能解决你的问题,请参考以下文章

检测触摸并按住屏幕iPhone(Xcode)[重复]

iPhone 检测地图图像上的触摸

iPhone - 检测对 UITableViewCell 子视图的触摸

cocos2D for iPhone 和触摸检测的问题

带有子节点的 CCNode 上的 Cocos2d-iphone v3 触摸事件检测

在 iPhone 上使用 Quartz 时如何保留之前的绘图?