[英]iPhone touch screen events
在iPhone SDK中,当触摸事件出现时会调用touchesBegan,touchesEnded和touchesMoved函数。 我的问题是,当我将手指放在屏幕上而不移动时,无法知道屏幕上是否有手指。 有没有办法获取当前的触摸屏状态?
在任何touchesBegan,touchesEnded和touchesMoved函数中,我都可以使用休闲代码来了解每次触摸的状态,但是在它们之外,我不能:
NSSet *allTouches = [event allTouches];
for(GLuint index = 0; index < [allTouches count]; ++index)
{
UITouch *touch = [[allTouches allObjects] objectAtIndex:index];
if([touch phase] != UITouchPhaseCancelled)
{
CGPoint touchPoint = [touch locationInView:self];
//do something with touchPoint that has state [touch phase]
}
}
您应该保留所有当前触摸点的列表。 确保您不只是保留UIEvent
或UITouch
对象(不能保证它们长寿)-而是创建自己的数据数据结构。 您所需要的只是保持当前触摸点下降的可能性。
如果您不想修复损坏的设计,为什么不保留有效触摸的运行清单可以解决您的问题?
NSMutableSet *触摸;
在touches开始中添加它们,在touchesEnded和touchesCancelled中删除它们...
您可以使用“全局”对象(即单例)来跟踪那些对象并同步数据访问。 我看不到查询该集合与直接向UIKit询问此信息有何不同。
如果您需要有关标准UIKit对象(即UIButton)上的触摸的信息,则可能需要将其子类化-我不确定您是否可以对所有类都达到预期的效果(因为它们(或它们的子视图)可以处理任何他们想要的方式)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.