繁体   English   中英

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

[英]iPhone how do I know when the user is touching the screen but not moving?

我想知道用户何时触摸屏幕但不移动。 以伪方式完成此操作非常简单-我知道仅通过使用touchesBegan和touchesEnded有多少触摸,但是问题是只有touchesMoved会发送事件。 如果您动, 则不会发送任何事件。 这曾经有一个不错的滑动滚动条-您可以拖动滚动条,即使放开它也会继续滚动,但是如果您的手指向下但没有移动,它将立即停止。 我不能只在touchesMoved中设置一个fingerDown布尔值,然后在我的循环中(发生滚动和滑动)将其设置为false,因为它们不同步。

基本上,我想模拟一个touchesNotMoved事件-每当您移动时,某个布尔值是正确的,当您不移动时,它是错误的。

另外,请不要问我为什么我不仅仅使用Apple的滚动功能-有充分的理由与这个问题无关。 :-)

这不是知道何时不激活触摸的答案,但是无论如何,这对我想做的事情的合理解决方案。

因此,如果其他任何人都在尝试模拟Apple的滚动视图(完美的像素滚动以及漂亮的滑动和滑动),那么您将需要以下内容:

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

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

这样就完成了。 它运行得很好,我看不到它与Apple的滚动之间有任何明显的区别。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM