我怎么能感觉到用户在不移动的情况下按住屏幕上的手指?

时间:2010-06-23 17:44:47

标签: iphone cocoa cocoa-touch ipad

我能想到的最好的方法是在touchesBegan事件方法中启动一个计时器。如果计时器在touchesEnded事件到来之前到期,那么您就知道用户正在按住屏幕。如果调用touchesMoved事件,则只需重置计时器,以便仅检测按住而不移动。

iOS SDK内置了哪些功能来处理这个问题?或者任何人都能想到的更好,更简单,更快捷的方法?

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我不知道另一种测试没有动作的方法;我认为你这样做会很简单。

您很可能无法使用touchesMoved来重置计时器,因为它非常非常敏感,您甚至无法用肉眼看到它而移动手指(随意测试一下)用NSLogs看看我的意思。)

您可能希望在重置计时器之前,为touchesMoved值与原始值的更改量实现某种类型的阈值差异值。

答案 1 :(得分:1)

尝试使用UILongPressGestureRecognizer

UILongPressGestureRecognizer* gr = [[UILongPressGestureRecognizer alloc]
                                    initWithTarget:theTarget
                                            action:@selector(someAction:)];
// change options of gr if you like.
// default: tolerate movement up to 4 px, fire the event after 0.4 secs.
[theView addGestureRecognizer:gr];
[gr release];

当用户长按[theTarget someAction:gr]时将被调用。