gpt4 book ai didi

iPhone 我如何知道用户何时触摸屏幕但没有移动?

转载 作者:行者123 更新时间:2023-12-03 21:24:41 25 4
gpt4 key购买 nike

我想知道用户何时触摸屏幕但没有移动。以伪方式执行此操作非常简单 - 我只需使用touchesBegan和touchesEnded就知道我有多少次触摸,但问题是只有touchesMoved发送事件。如果您没有移动,则不会发送任何事件。这被用来有一个很好的滑动滚动 - 你可以快速滚动,即使你松开滚动,它也会继续滚动,但如果你的手指向下但没有移动,它会立即停止。我不能只在touchesMoved 中设置一个fingerDown bool 值,然后在循环中将其设置为false(滚动和滑动发生的地方),因为它们不同步。

基本上,我想模拟 TouchNotMoved 事件 - 每当你移动时,某个 bool 为 true,当你不移动时,它为 false。

另外,请不要问我为什么我不只使用苹果的滚动功能 - 有一个很好的理由与这个问题无关。 :-)

最佳答案

这并不是了解触摸何时不活动的答案,但它无论如何都是我想要做的事情的合理解决方案。

因此,如果其他人试图模拟 Apple 的 ScrollView (像素完美的滚动加上漂亮的快速滑动),那么您将需要以下内容:

记录触摸次数的整数。
与触摸事件分开的循环或计时器。
一个向量(或两个 float )存储滚动“衰减”量。
恒定的浮点衰减值,例如 0.95。

然后您可以执行以下操作:
- 在touchesBegan中,将touchCount增加[touches count]。
- 在touchesEnded中,将touchCount减少[touches count]。
- 在touchesMoved中,创建一个代表currentTouchPos - previousTouchPos的向量。
- 通过该向量滚动您的 View 。
- 将你的scrollDecay向量设置为等于该向量。
- 在主计时器或循环中,仅当 touchCount <= 0 时,才通过scrollDecay ScrollView 。此外,将scrollLDecay 向量乘以衰减值。一旦达到非常低的值(例如 0.1),请将其设置为 0。

你就完成了。它工作得很好,我看不出这和苹果的滚动有任何明显的区别。

关于iPhone 我如何知道用户何时触摸屏幕但没有移动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1391396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com