continueTrackingWithTouch: withEvent: не вызывается непрерывно - PullRequest
1 голос
/ 09 марта 2010

У меня есть очень простой подкласс 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: но это кажется большим усилием для чего-то, что должно быть простым.

1 Ответ

2 голосов
/ 09 марта 2010

Поведение, которое вы описываете, является предполагаемым. Отслеживание только для отслеживания движения.

Чтобы проверить продолжительность касания, я бы предложил запустить таймер в beginTrackingWithTouch, который запускает событие через 2 секунды, и тестовый случай в endTrackingWithTouch, который отменяет таймер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...