我有一个附加到UIView的滑动手势,当滑动位于其子视图顶部时,它似乎没有注册。
答案 0 :(得分:0)
让我们说A是您希望接收滑动的根UIView,而B是A的子视图,您不想真正想要接收滑动。
你必须将B子类化,以便你可以实现这个方法,并在B
中实现这个方法- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([gestureRecognizer isKindOfClass:UISwipeGestureRecognizer]) {
return NO;
}
return YES;
}
您还可以看到如何通过实现gestureRecognizer获得各种功能:shouldReceiveTouch:
我希望有所帮助!
答案 1 :(得分:0)
解决方案之一是检查子视图内是否有手势点, 有一个有用的C函数:
/* Return true if `point' is contained in `rect', false otherwise. */
bool CGRectContainsPoint(CGRect rect, CGPoint point)
您可以这样使用:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
return CGRectContainsPoint(subview.frame, [touch locationInView:self.view]);;
}
答案 2 :(得分:0)
其他解决方案应该可行,但如果它没有自己的事件处理程序,则可能更容易在子视图中设置subview.userInteractionEnabled = false
。