【问题标题】:UIScrollview zoom is making UIScrollview's subview PanUIScrollview 缩放正在使 UIScrollview 的子视图 Pan
【发布时间】:2016-08-11 13:24:18
【问题描述】:

我的UIScrollView 有一些问题。所以情况如下: 我有一个UIScrollView,里面有几个小的UIViewUIView 有一个 Pan 事件将它们移动到滚动视图中。但是当我缩放我的滚动视图并且我的一个手指放在一个使平移开始的UIview 上并且我的UIScrollView 没有缩放(并且UIview 正在移动)。

我尝试设置平底锅的MaximumNumberOfTouches,但这不起作用。我认为这是因为第二次触摸在视野之外。 你知道如何让它工作吗?

谢谢!

【问题讨论】:

    标签: ios iphone uiview uiscrollview


    【解决方案1】:

    您必须在您的视图控制器中实现 UIGestureRecognizerDelegate 协议,以便您可以使用gestureRecognizer(_:shouldRequireFailureOfGestureRecognizer: 方法并在需要时返回true。您可以通过将第一个和第二个参数分别与 Pan Gesture Recognizer 和 Scroll View 的 Pinch Gesture Recognizer 进行比较来形成限制性谓词:

    func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOfGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return gestureRecognizer == myPanGestureRecognizer && otherGestureRecognizer == scrollView.pinchGestureRecognizer
    }
    

    这样,后者将等到滚动视图的手势识别器失败,然后再转换到状态.Recognized。更多信息可以在Apple Gesture Recognizer Programming Guide找到。

    不要忘记将您的 Pan Gesture Recognizer 的委托属性设置为 self

    myPanGestureRecognizer.delegate = self
    

    【讨论】:

    • 感谢您的帮助。我为 pan 设置了代表,它返回 false 以缩放滚动视图。但是现在如果我们不捏,pan 永远不会启动事件。你知道我错过了什么吗?
    • 嗯……我刚试了一下,即使没有添加上面的委托协议方法,一切似乎都是开箱即用的。你确定你正确设置了滚动视图的minimumZoomScalemaximumZoomScale
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多