如何识别Swift中的连续触摸?

前端之家收集整理的这篇文章主要介绍了如何识别Swift中的连续触摸?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何识别 Swift代码中的连续用户触摸?连续我的意思是用户将手指放在屏幕上.只要用户触摸屏幕,我想将精灵套件节点移动到用户触摸的方向.
这个过程最困难的事情是跟踪多点触控环境中的单个触摸.这个“简单”解决方案的问题(即,在touchesBegan中打开“istouched”并在touchesEnded中将其关闭)是如果用户触摸屏幕上的另一个手指然后提起它,它将取消第一次触摸的操作.

为了实现这种防弹,您需要跟踪其生命周期内的各个触摸.当第一次触摸发生时,您保存该触摸的位置并将对象移向该位置.应该将任何进一步的触摸与第一次触摸进行比较,如果它们不是第一次触摸则应该被忽略.这种方法还允许您处理多点触控,其中可以使对象朝向屏幕上当前的任何手指移动,然后如果第一个手指被抬起则移动到下一个手指,依此类推.

值得注意的是,UITouch对象在touchesBegan,touchesMoved和touchesEnded之间保持不变.您可以将UITouch对象视为在touchesBegan中创建,在touchesMoved中更改,并在touchesEnded中销毁.您可以通过将触摸对象的引用保存到在touchesBegan中创建的字典或数组中来跟踪触摸过程中的触摸阶段,然后在touchesMoved中,您可以检查任何现有触摸的新位置并更改如果用户移动手指,则可以使用对象(可以应用公差来防止抖动,例如,如果x / y距离小于某个公差,则不要改变路线).在touchesEnded中,您可以检查焦点中的触摸是否是结束的触摸,并取消对象的移动,或将其设置为朝向仍在发生的任何其他触摸移动.这很重要,就像你只检查任何旧的触摸对象结束一样,这也会取消其他触摸,这会产生意想不到的结果.

这篇文章在Obj-C中,但代码很容易移植到Swift并向您展示您需要做什么,只需查看“处理复杂多点触控序列”下的内容https://developer.apple.com/library/ios/documentation/EventHandling/Conceptual/EventHandlingiPhoneOS/multitouch_background/multitouch_background.html

原文链接:https://www.f2er.com/swift/319008.html

猜你在找的Swift相关文章