将手应用于iPad屏幕时,如何仅检测一次触摸?

时间:2011-11-23 01:28:21

标签: objective-c ios cocoa-touch ipad

我正在为有运动障碍的儿童开发一款iPad应用程序。问题是他们中的许多人试图用他们的整只手或拳头与应用程序进行交互。此外,他们的手摇动,他们花了太长时间从屏幕上举起他们的整个手。这导致应用程序在与屏幕交互时注册多个触摸事件。

每次孩子按下视图时,我的应用程序如何仅发起一个事件?

2 个答案:

答案 0 :(得分:2)

这是一个艰难的。但是你的问题是“你有什么建议,这样每次孩子按下视图时才会发起一个事件?”您可以禁用多次触摸。

使用multipleTouchEnabled属性禁用多点触控。例如,这将禁用视图控制器的视图的多点触控。

-(void)viewDidLoad{
    [super viewDidLoad];
    self.view.multipleTouchEnabled = NO;
}

另一个指针是iOS设备具有VoiceOver功能,主要面向听障人士,但在这种情况下可能会有所帮助。您可以在设置中启用VoiceOver并检查它。

假设您是注册苹果开发者,他们也有一些关于可访问性的WWDC会议。

希望这有帮助,总是很高兴看到残疾人的考虑。

答案 1 :(得分:1)

您可以监控所有当前触摸并平均其X和Y坐标,以生成表示这些触摸的质心的单个值,而不是单独跟踪每个触摸事件。这一个值可用作输入,以确定触摸视图的位置,并根据需要处理该交互。

此外,您可以在触摸位置使用低通滤波器,以消除手抖动时可能产生的一些抖动。在真正注册之前,你可能还可以在触摸升空之后稍微延迟使用,以防有人的手抖动到足以断开屏幕并立即重新连接。

即使对于没有运动障碍的用户,我也通过触摸事件添加了一些调整和启发式,以解释人手不精确的问题。但是,没有一个简单的解决方案,因为每个案例都需要进行大量的实验。