У меня есть очень простой подкласс 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:" не вызывается, если мышь фактически не перемещается. Это не занимает много движения, но требует некоторого движения.
Возвращая «ДА» в обоих случаях, я должен быть настроен на получение непрерывных событий. Это странность симулятора или я что-то не так делаю?
ПРИМЕЧАНИЕ. Для userInteractionEnabled установлено значение YES.
ПРИМЕЧАНИЕ 2. Я мог бы установить таймер в beginTrackingWithTouch: withEvent: но это кажется большим усилием для чего-то, что должно быть простым.