Używam klasy UILongPressGestureRecognizer do obsługi, jeśli jeden element jest wybrany.UILongPressGestureRecognizer Zatrzymaj uchwyt bez zatrzymywania dotykania
Logika wygląda następująco: Użytkownik naciska na 1 sekundę elementu (podklasa UIView). Po wykryciu gestu przedmiot jest podświetlony i ruchomy.
Użytkownik musi przesunąć ten element po ekranie bez zatrzymywania go.
Problem z którym się stykam jest rozpoznawany przez gesty cieni dotyka/Koniec/Koniec, aby klasa przedmiotu mogła ustawić ruch.
Próbowałem usunąć gest rozpoznany po wykryciu i wybraniu elementu. Ale wciąż wysyłanie wiadomości do uchwytu gestu zamiast metod dotknięcia połączenia.
Ktoś wie, w jaki sposób zatrzymać "słuchanie" czytnika gestów bez opuszczania palca ekranu?
Dzięki.
Oto kod:
-(void)addGestures
{
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = iItemLongPressTime;
[self addGestureRecognizer:longPress];
[longPress release];
}
- (void)handleLongPress:(UILongPressGestureRecognizer*)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
NSLog(@"Long press Ended");
}
else {
if (self.isSelected) return;
if ([delegate respondsToSelector:@selector(singleTouch:)])
[delegate singleTouch:self];
[self removeGestureRecognizer:[self.gestureRecognizers objectAtIndex:0]];
NSLog(@"Long press detected.");
}
}
Jak widać w branży innego wywołuje delegata umożliwia wszystkie procedury, aby oznaczyć ten przedmiot jako wybrany, a po prostu usunąć rozpoznawania, czyli recognizers.
Czego mi brakuje?
--EDIT--
Gotowe! To działa:
#pragma mark Gesture Functions
-(void)addGestures
{
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = iItemLongPressTime;
[self addGestureRecognizer:longPress];
[longPress release];
}
- (void)handleLongPress:(UILongPressGestureRecognizer*)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
NSLog(@"Long press Ended");
}
else {
NSLog(@"Long press detected.");
if (self.isSelected) return;
if ([delegate respondsToSelector:@selector(singleTouch:)])
[delegate singleTouch:self];
[sender removeTarget:self action:@selector(handleLongPress:)];
sender.enabled = NO;
[self removeGestureRecognizer:sender];
}
}
Pozdrawiam!
proszę spróbować opisać szczegółowo swoje pytanie –
Próbowałem wysłać, aby usunąć metodę nadawcy jako parametr, ale nadal nie działa. – NemeSys
Edytowałem moją odpowiedź ... –