iOS 上 MonoTouch 中的多点触控

Posted

技术标签:

【中文标题】iOS 上 MonoTouch 中的多点触控【英文标题】:Multitouch in MonoTouch on iOS 【发布时间】:2012-04-03 00:06:26 【问题描述】:

我需要在 ios MonoTouch 应用程序中跟踪多个触摸事件。我已经覆盖了 TouchesBegan、TouchesCancelled、TouchesMoved 和 TouchesEnded 方法。

我现在需要弄清楚的是如何在每个覆盖期间迭代触摸(会有多个)并匹配它们。我想知道触摸何时开始并对其进行操作而不是不同的触摸事件。用户可能会放下一根手指,此时如果该手指一直向下,我将启动一个计时器来做某事。

如果在此期间用户放下另一根手指,我将要为与第一根手指不同的那根手指启动一个计时器。

我很确定我可以找到一种方法来存储我的计时器等。我不知道如何遍历 NSSet 在每个覆盖中包含的触摸事件,然后如何在覆盖之间唯一地标识它们。

我假设 NSSet 中的 TouchesBegan 触摸将与这些覆盖获得的 NSSet 中的 TouchesMoved、TouchesCancelled 或 TouchesEnded 触摸匹配。

这是真的吗?如果是这样,我如何获取每一个并唯一标识它们以匹配它们?

【问题讨论】:

【参考方案1】:

这是 MonoGame 使用 TouchesBegan 等的一个很好的例子:https://github.com/mono/MonoGame/blob/develop/MonoGame.Framework/iOS/iOSGameView_Touch.cs

UITouch 还有一个时间戳字段,您可以使用它来区分触摸。我认为您应该将它们存储在字典中以获取您提到的功能。

这是 UITouch 的类参考:http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITouch_Class/Reference/Reference.html

【讨论】:

太棒了。我正在寻找的键是 touches.ToArray 和 touch.Handle.ToInt32。 对我不起作用,在 TouchesMoved 上,我得到 touches.Count 并且它始终为 1。即使我放了更多手指。 如果你想成为伟大的程序员,你必须使用的力量。

以上是关于iOS 上 MonoTouch 中的多点触控的主要内容,如果未能解决你的问题,请参考以下文章

多点触控与多鼠标支持

Linux 中的多点触控

IOS:仅使用多点触控缩放 uiscrollview

iOS 数据结构维护多点触控痕迹?

Linux 上 Java 中的多点触控事件:来自操作系统的事件还是在应用程序中识别?

即使没有人告诉它,为啥 QScrollArea 在多点触控上滚动?