Así es como agrego gesto a la vista
- (void)_addPanGestureToView:(UIView *)view {
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(_handlePan:)];
panGesture.delegate = self;
panGesture.maximumNumberOfTouches = 1;
panGesture.minimumNumberOfTouches = 1;
[view addGestureRecognizer:panGesture];
}
Todo funciona a la perfección, pero el gesto está en la vista general, ¿cómo podría hacer algo como responder solo con la mitad de la vista?
Respuestas
7 para la respuesta № 1¿Por qué no solo usar CGRectContainsPoint()
y verifique si la ubicación de toques dentro de su vista está dentro del área que desea que sea. Si no es "t", ignórelo:
- (void)panGestureDetected:(UIPanGestureRecognizer *)sender
{
CGPoint location = [sender locationInView:sender.view];
CGRect someRect = ...
if (CGRectContainsPoint(someRect, location)) {
// point is in specified area
}
}
3 para la respuesta № 2
La solución más fácil sería agregar una vista transparente en el área donde desea que funcione su reconocedor de gestos, y agregar el gesto a esa vista (y esa vista como una subvista, por supuesto). Algo así como:
- (void)_addPanGestureToView:(UIView *)view {
UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(_handlePan:)];
panGesture.delegate = self;
panGesture.maximumNumberOfTouches = 1;
panGesture.minimumNumberOfTouches = 1;
UIView *viewForGesture = [[UIView alloc] initWithFrame:CGRectMake(....)]; //your frame
[viewForGesture addGestureRecognizer:panGesture];
[view addSubview:viewForGesture];
}