objective-c - todos - guia qgis
Desactivar reconocedor de gestos (3)
¿Por qué no configura el delegado para el reconocedor de gestos de barrido y los maneja dentro del mismo método de delegado?
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ( [gestureRecognizer isMemberOfClass:[UITapGestureRecognizer class]] ) {
// Return NO for views that don''t support Taps
} else if ( [gestureRecognizer isMemberOfClass:[UISwipeGestureRecognizer class]] ) {
// Return NO for views that don''t support Swipes
}
return YES;
}
Tengo dos tipos de reconocedores, uno para tocar y otro para deslizar
UIGestureRecognizer *recognizer;
//TAP
recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(numTap1:)];
[(UITapGestureRecognizer *)recognizer setNumberOfTouchesRequired:1];
[self.view addGestureRecognizer:recognizer];
self.tapRecognizer = (UITapGestureRecognizer *)recognizer;
recognizer.delegate = self;
[recognizer release];
//SWIPE RIGHT
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeRight:)];
self.swipeRightRecognizer =(UISwipeGestureRecognizer *)recognizer;
swipeRightRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
[self.view addGestureRecognizer:swipeRightRecognizer];
self.swipeRightRecognizer = (UISwipeGestureRecognizer *)recognizer;
[recognizer release];
con esta función puedo desactivar los toques en algunos objetos.
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ((touch.view == loseView) || (touch.view == subBgView) || (touch.view == btnAgain)) {
return NO;
}
return YES;
}
¿Cómo puedo desactivar los golpes?
¡Muchas gracias!
Tengo un problema similar. Algunos de mis usuarios con discapacidad tocan y deslizan al mismo tiempo, por lo que la aplicación pasa a la siguiente pantalla. Configuré una opción para permitirles usar un toque de tres dedos en su lugar. Necesito invocar la opción del delegado popoverControllerDidDismissPopover y cuando la aplicación se inicia por primera vez. Entonces escribí un método que combina las respuestas anteriores. Busca todos los reconocedores de gestos de barrido y los apaga, luego enciende mi reconocedor de gestos de toque.
- (void)changeGestureRecognizer {
// Three finger tap to move to next screen
if ([Globals sharedInstance].useDoubleTapToMoveToNextScreen) {
// Let’s see which gestures are active and turn off the swipes
for (UIGestureRecognizer *gestureRecognizer in self.view.gestureRecognizers) {
NSLog(@"The gestureRecognizer is %@", gestureRecognizer);
if ( [gestureRecognizer isMemberOfClass:[UISwipeGestureRecognizer class]] ) gestureRecognizer.enabled = NO;
}
// Add the three finger tap
UITapGestureRecognizer *twoFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeNext)];
[twoFingerTap setNumberOfTapsRequired:1];
[twoFingerTap setNumberOfTouchesRequired:3];
[self.view addGestureRecognizer:twoFingerTap];
}
}
UIGestureRecognizer
tiene una propiedad llamada enabled
. Esto debería ser lo suficientemente bueno para deshabilitar tus golpes:
swipeGestureRecognizer.enabled = NO;