【发布时间】:2013-06-15 13:17:32
【问题描述】:
我正在使用带有坐标系的touchesMoved 来检测和响应屏幕某些区域内的用户触摸。例如,如果我有一个虚拟键盘并且用户在按键上滑动,它会读取坐标并做出响应:
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch * touch = [[event allTouches] anyObject];
CGPoint point = [touch locationInView:touch.view];
if(point.y < 333 && point.y > 166 && point.x < 90 && point.x > 20)
{
//do something
}
}
...但是问题是,如果用户慢慢拖过按键,或者按键之间的边界,该方法会连续触发多次,弹奏钢琴键的声音会断断续续。
如何防止这种口吃?我认为在每个连续的 if 语句触发之间设置 0.25 秒的最小延迟会有所帮助。此外,这种延迟仅适用于特定的 if 语句——我希望用户能够快速拖动键并尽可能快地触发不同键的 if 语句。
有人知道如何编写这样的代码吗?
【问题讨论】:
标签: ios objective-c xcode touchesmoved