奇怪的点击并保持SpriteKit行为

时间:2015-06-21 03:05:02

标签: ios objective-c sprite-kit

好的,这是一个棘手的问题。当用户点击并按住屏幕时,我想要提供信息性警告框。

以下是我用来执行此操作的代码(在Objective-C SpriteKit中):

在我的touchesBegan:withEvent:方法中,我有这个:

tapBegin = [NSDate date];

猜测是否使用当前日期和时间生成NSDate对象(Objective-C和Apple等同于DateTime date = Now)。

在我的touchesEnded:withEvent:方法中,我有这个:

NSDate *endTap = [NSDate date];
NSDateComponents *comps = [[NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian] components:NSCalendarUnitSecond fromDate:tapBegin toDate:endTap options:0];
if (comps.second >= 1) {
     // tap and hold event
} else {
     // normal tap event
}

结果应为:如果用户点按并持有超过一秒的内容,则if语句应为true,如果不是,则应为false

实际结果有奇怪的行为:如果用户试图点击某些内容,他们会随机获取点按并保持事件。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

如果您想获得两个日期之间的差异,那么您应该使用timeIntervalSinceDate: 我会将touchesEnded:withEvent:更改为以下内容:

NSDate *endTap = [NSDate date];
NSTimeInterval diff = [tapBegin timeIntervalSinceDate:endTap];
NSTimeInterval threshold = 1.0;
if (diff >= threshold) {
    // tap and hold event
} else {
    // normal tap event
}