Очень трудно захватить двойное нажатие на подкласс UIButton.(задержка для захвата двойного нажатия) - PullRequest
2 голосов
/ 09 сентября 2010

Я говорю о двух разных прикосновениях к экрану одним и тем же пальцем

Я думаю, что у меня есть правильное кодирование для этого.но для меня практически невозможно создать двойной тап на моем iPad.Можно ли увеличить временной интервал между одиночным и двойным касанием, чтобы его было проще запустить.Я делаю двойной тап очень быстро, и он фиксирует это как два отдельных клика.только иногда я достаточно удачлив, чтобы вызвать двойное касание.Я помещаю свой подкласс элемента UIButton в представление прокрутки.

В любом случае, мой подкласс UIButton реализует:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{

 UITouch *touch = [[event allTouches] anyObject];

 NSLog(@"Touch count:%d",touch.tapCount);

 if (touch.tapCount == 1) 
 {
  //Do things for one touch
 }
 else if (touch.tapCount == 2) 
 {
  //Do things for double touch
 }
}

Это захват события.и именно поэтому я думаю, что мой код правильный, я просто не смог найти ничего, что связано с UIEvent и что определяет, сколько касаний происходит.Я протестировал эту же вещь в другом UIView, и он работал точно так, как ожидалось.

Ответы [ 3 ]

3 голосов
/ 09 сентября 2010

Ваш код обнаруживает два пальца одновременно, а не быструю последовательность касаний (двойное касание).

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

UITapGestureRecognizer *singleFingerDoubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleFingerDoubleTap:)];
singleFingerDoubleTap.numberOfTouchesRequired = 1;
singleFingerDoubleTap.numberOfTapsRequired = 2;
[self addGestureRecognizer:singleFingerDTap];
[singleFingerDTap release];

и реализуйте метод для двойного касания:

-(void)handleSingleFingerDoubleTap:(id)sender {
  //Do stuff
}
0 голосов
/ 16 ноября 2010

В этом посте есть набросок того, что я считаю правильным ответом: двойное нажатие в UIButton

0 голосов
/ 09 сентября 2010

ты не звонишь [super touchesBegan:touches withEvent:event]

...