Устройство распознавания Жеста iPad - Отсроченная реакция

В моем приложении я добавил новые Устройства распознавания Жеста, которые доступны в 3,2 SDK. Все, кажется, работает правильно и время отклика на экране, очень быстро. Но по некоторым причинам когда я добавляю requireGestureRecognizerToFail к некоторым моим жестам существует очень видимая задержка, когда жест инициирован. Ниже отрывок кода, который я использую для создания Устройств распознавания Жеста. Кто-либо знает, почему существует задержка и как я могу зафиксировать ее? Я использую requireGestureRecognizerToFail предотвратить SingleTap жест от инициирования, когда пользователь выполняет a DoubleTap.

 - (void)createGestureRecognizers {

 //Single Finger Double-Tap
 UITapGestureRecognizer *singleFingerDTap = [[UITapGestureRecognizer alloc]
            initWithTarget:self action:@selector(handleSingleDoubleTap:)];
    singleFingerDTap.numberOfTapsRequired = 2;
    [super addGestureRecognizer:singleFingerDTap];

 //Single Finger Tap
 UITapGestureRecognizer *singleFingerTap = [[UITapGestureRecognizer alloc]
              initWithTarget:self action:@selector(handleSingleTap:)];
    singleFingerTap.numberOfTapsRequired = 1;
 [singleFingerTap  requireGestureRecognizerToFail:singleFingerDTap];
 [self addGestureRecognizer:singleFingerTap];

 //Two Finger Pan
 UIPanGestureRecognizer *panGesture2 = [[UIPanGestureRecognizer alloc]
            initWithTarget:self action:@selector(handlePanGesture2:)];
    panGesture2.maximumNumberOfTouches = 2;
 [super addGestureRecognizer:panGesture2];

 //Single Finger Pan
 UIPanGestureRecognizer *panGesture1 = [[UIPanGestureRecognizer alloc]
             initWithTarget:self action:@selector(handlePanGesture1:)];
    panGesture1.maximumNumberOfTouches = 1;
 [panGesture1 requireGestureRecognizerToFail:panGesture2];
 [super addGestureRecognizer:panGesture1];

 [singleFingerDTap release];
 [singleFingerTap release];
    [panGesture1 release];
 [panGesture2 release];
}
8
задан Kara 3 September 2013 в 17:09
поделиться

1 ответ

Если вы хотите различать одиночное и двойное касание, вы должны подождать достаточно долго, чтобы понять, что второго касания не будет, прежде чем вы сможете назвать его одиночным касанием. Альтернативой может быть разработка всех ваших действий с одним касанием таким образом, чтобы их можно было асинхронно отменять или возвращать при обнаружении двойного касания.

Например, если у вас есть страницы смены одного касания и масштабирование двойным касанием, то вам нужно будет анимировать страницу, изменяющуюся при одиночном касании, а затем отменить анимацию и масштабировать вместо этого при обнаружении второго касания. К тому времени вид, который обрабатывал одно касание, возможно, переместился. В большинстве случаев это больше проблем и путаницы, чем того стоит.

6
ответ дан 5 December 2019 в 22:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: