我希望允许用户将黄色方块UIView添加到UIScrollView,然后拖放和缩放用户创建的黄色方块。
我知道要启用此功能,我需要创建一个辅助视图,比如yellowSquareContainerView,然后按如下所示设置:
func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return yellowSquareContainerView
}
我将黄色方块添加到这个容器视图中。
然而,这种方法的主要问题是,如果用户将方块移动到yellowSquareContainerView的边界之外,则添加到黄色UIView的UIPanGestureRecognizer将不起作用(这是一个完全有效的用例)。
当黄色方块在容器视图的边界之外时,如何让UIPanGestureRecognizer工作?
1条答案
按热度按时间qeeaahzv1#
经过一番研究,我找到了一种将视图平移到其父视图边界之外的方法。它涉及覆盖父视图的
point
函数。在内部,视图使用它的point函数来确定是否应该允许一个事件(如触摸或平移)。默认情况下,点检查事件是否在视图的边界内开始。这就是为什么您可以平移其父视图之外的视图,但不能平移其父视图之后的视图。通过将point重写为always return true,该手势总是被允许的。
以下是步骤:
1.创建UIView的子类
1.重写
point(inside:with:)
以始终返回true1.使你的容器视图成为这个子类的成员
下面是一个示例子类:
下面是一些示例代码: