我有一个非常简单的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:但这对于一些应该简单的事情来说似乎更省力。
答案 0 :(得分:2)
您描述的行为是预期的行为。跟踪只是为了跟踪运动。
为了测试触摸的持续时间,我建议在beginTrackingWithTouch
中启动一个定时器,在2秒后触发事件,并在endTrackingWithTouch
中启动取消定时器的测试用例。