continueTrackingWithTouch:withEvent:不连续调用

时间:2010-03-09 02:39:37

标签: iphone cocoa-touch

我有一个非常简单的UIButton子类,它会在按钮保持2秒后触发自定义事件。为了做到这一点,我覆盖了:

//
// Mouse tracking
//
- (BOOL)beginTrackingWithTouch:(UITouch *)touch 
                     withEvent:(UIEvent *)event
{
    [super beginTrackingWithTouch:touch withEvent:event];
    [self setTimeButtonPressed:[NSDate date]];

    return (YES);
}

- (BOOL)continueTrackingWithTouch:(UITouch *)touch withEvent:(UIEvent *)event
{
    [super continueTrackingWithTouch:touch withEvent:event];
    if ([[self timeButtonPressed] timeIntervalSinceNow] > 2.0)
    {
        //
        // disable the button.  This will eventually fire the event
        // but this is just stubbed to act as a break point area.
        //
        [self setEnabled:NO];
        [self setSelected:NO];
    }

    return (YES);
}

我的问题是(这是在模拟器中,还不能在设备上工作)“continueTrackingWithTouch:withEvent:”除非实际移动了鼠标,否则不会被调用。它不需要太多动作,但确实需要一些动作。

通过在这两个中返回“YES”,我应该设置为接收连续事件。这是模拟器的奇怪还是我做错了什么?

注意:userInteractionEnabled设置为YES。

注意2:我可以在beginTrackingWithTouch中设置一个计时器:withEvent:但这对于一些应该简单的事情来说似乎更省力。

1 个答案:

答案 0 :(得分:2)

您描述的行为是预期的行为。跟踪只是为了跟踪运动。

为了测试触摸的持续时间,我建议在beginTrackingWithTouch中启动一个定时器,在2秒后触发事件,并在endTrackingWithTouch中启动取消定时器的测试用例。