我的UIScrollView
遇到了一些麻烦。所以情况如下:
我有一个UIScrollView
里面有一些小UIView
。
UIView
有一个Pan事件可以在scrollview中移动它们。但是当我缩放我的滚动视图并且我的一个手指在UIview
上时,会启动平移并且UIScrollView
没有缩放(并且UIview
正在移动)。
我尝试设置平底锅的MaximumNumberOfTouches
,但这不起作用。我认为这是因为第二次触摸是在视图之外。
你知道如何让它发挥作用吗?
谢谢!
答案 0 :(得分:0)
您必须在View Controller中实施 UIGestureRecognizerDelegate协议,以便您可以使用gestureRecognizer(_:shouldRequireFailureOfGestureRecognizer:
方法并在需要时返回true
。您可以通过将第一个和第二个参数分别与Pan Pan Gesture Recognizer和Scroll View的Pinch Gesture Recognizer进行比较来形成限制性谓词:
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRequireFailureOfGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return gestureRecognizer == myPanGestureRecognizer && otherGestureRecognizer == scrollView.pinchGestureRecognizer
}
这样,后者将等到Scroll View的手势识别器在转换到状态.Recognized
之前失败。有关详细信息,请参阅Apple Gesture Recognizer Programming Guide。
不要忘记将Pan Gesture Recognizer的委托属性设置为self
:
myPanGestureRecognizer.delegate = self