2010-09-09 1 views
2

Я говорю о двух отдельных касаниях на экране одним и тем же пальцемОчень сложно сделать двойной щелчок на подклассе UIButton. (время задержки для захвата двойного крана)

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

Во всяком случае мой подкласс 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

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

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

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

и реализовать метод Hande двойной кран:

-(void)handleSingleFingerDoubleTap:(id)sender { 
    //Do stuff 
} 
+0

Вы уверены, что я попробовал это в классе, который у меня есть только UIView, и он захватил «двойной» ответ так, как я ожидал , но в любом случае, какие-либо идеи о том, как поймать двойной кран? –

+0

Я только что отредактировал ответ, чтобы дать вам пример –

+0

Единственное предостережение в том, что распознаватели жестов доступны только для iOS 3.2 и выше, поэтому этот код не будет работать для устройств 3.0 и 3.1. –

0

вы не вызывая [super touchesBegan:touches withEvent:event]

+0

Да, я знаю, но все же мой оператор журнала должен показать двойной кран. Который действительно трудно сделать. плохо положил это и увидел свою удачу. –

+0

Это совсем не помогло –