在视图上限制手势

这是我如何添加手势的观点

- (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]; } 

一切都运转良好,但手势是在整个看法,我怎么能做一些像手势回应只有一半的看法?

为什么不使用CGRectContainsPoint()并检查视图中的触摸位置是否在您希望的位置。 如果不是,请忽略它:

 - (void)panGestureDetected:(UIPanGestureRecognizer *)sender { CGPoint location = [sender locationInView:sender.view]; CGRect someRect = ... if (CGRectContainsPoint(someRect, location)) { // point is in specified area } } 

最简单的解决scheme是在你想让你的手势识别器工作的区域添加一个透明的视图,并将该手势添加到该视图(以及该视图当然是子视图)。 像这样的东西:

 - (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]; }