我能想到的最好的方法是在touchesBegan事件方法中启动一个计时器。如果计时器在touchesEnded事件到来之前到期,那么您就知道用户正在按住屏幕。如果调用touchesMoved事件,则只需重置计时器,以便仅检测按住而不移动。
iOS SDK内置了哪些功能来处理这个问题?或者任何人都能想到的更好,更简单,更快捷的方法?
提前感谢您的帮助!
答案 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]
时将被调用。