繁体   English   中英

iPhone触摸屏事件

[英]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]
    }
}

您应该保留所有当前触摸点的列表。 确保您只是保留UIEventUITouch对象(不能保证它们长寿)-而是创建自己的数据数据结构。 您所需要的只是保持当前触摸点下降的可能性。

如果您不想修复损坏的设计,为什么不保留有效触摸的运行清单可以解决您的问题?

NSMutableSet *触摸;

在touches开始中添加它们,在touchesEnded和touchesCancelled中删除它们...

您可以使用“全局”对象(即单例)来跟踪那些对象并同步数据访问。 我看不到查询该集合与直接向UIKit询问此信息有何不同。

如果您需要有关标准UIKit对象(即UIButton)上的触摸的信息,则可能需要将其子类化-我不确定您是否可以对所有类都达到预期的效果(因为它们(或它们的子视图)可以处理任何他们想要的方式)。

暂无
暂无

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

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