我想要一個只能水平移動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