我想要一个只能水平移动UIView的平移手势。停止UIPanGestureRecognizer在UIScrollView中垂直移动UIView
到目前为止,在移动手势的开始,只有水平移动是允许的,但一旦 平移手势已经开始,UIView的水平和垂直移动。
- 我如何停止UIView随时垂直移动?
- 有没有什么办法可以让UIView的顶端始终在屏幕的顶端?
即它从来没有从它的设定位置
以下垂直移动是我当前的代码:
- (void)panePanned:(UIPanGestureRecognizer *)gestureRecognizer
{
switch (gestureRecognizer.state) {
case UIGestureRecognizerStateBegan: {
self.paneStartLocation = [gestureRecognizer locationInView:self.mainView];
self.paneVelocity = 0.0;
break;
}
case UIGestureRecognizerStateChanged: {
CGPoint panLocationInPaneView = [gestureRecognizer locationInView:self.mainView];
CGFloat velocity = -(self.paneStartLocation.x - panLocationInPaneView.x);
CGRect newFrame = self.mainView.frame;
newFrame.origin.x += (panLocationInPaneView.x - self.paneStartLocation.x);
if (newFrame.origin.x < 0.0) newFrame.origin.x = 0.0;
self.mainView.frame = newFrame;
if (velocity != 0) {
self.paneVelocity = velocity;
}
break;
}
case UIGestureRecognizerStateEnded: {
[self animate];
break;
}
default:
break;
}
}
谢谢!
我只看到mainView框架的origin.x更新。此代码中没有任何内容表示y值正在改变。也许NSLog(@“%f”,self.mainView.frame.origin.y);开状态改变了?让我们看看它是否在变化。 – danh 2013-04-10 02:18:40
我检查了它,它始终为0表示origin.y :(@danh – GangstaGraham 2013-04-10 02:19:48
另外,我也不更改动画方法中的y值,所以我对发生的事情感到困惑。@danh – GangstaGraham 2013-04-10 02:21:04