後我玩的XCode的那一刻,但具有的Objective-C /可可觸摸等沒有經歷如此忍受我,如果這是一個非常基本的問題。我只問你們,因爲我一直在努力向谷歌提供一個答案,並對無聊的事情感到無聊。捕捉一個UIView到設定位置panGesture釋放
我想創建一個水平平移菜單。
我目前保持3 UILabels
主UIView
對象,其被附接至UIPanGestureRecognizer
內部。
我使用了一個handlePan方法根據用戶的平移手勢來接收和翻譯* menuviewUIView
對象,但我需要找到當PanGesture被釋放來計算,其中的UIView
的中心座標將UIView
元素向後/向前對齊。
- (IBAction)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, 150);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
if(recognizer.state == UIGestureRecognizerStateEnded)
{
if(recognizer.view.center.x >= 576);{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
menuview.transform = CGAffineTransformMakeTranslation((764 - menuview.center.x), 0);
[UIView commitAnimations];
}
if(recognizer.view.center.x && menuview.center.x >= 264);{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
menuview.transform = CGAffineTransformMakeTranslation((406 - menuview.center.x), 0);
[UIView commitAnimations];
}
if(recognizer.view.center.x < 264);{
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
menuview.transform = CGAffineTransformMakeTranslation((122 - menuview.center.x), 0);
[UIView commitAnimations];
}
}
}
你看,我試圖捕捉到一個三個點在x軸,不同的地方,當用戶發佈他們PanGesture
的UIView
的中心。
目前,它充當如果它無視「recognizer.view.center.x」 if語句,因爲不管它被釋放它捕捉到X = 122(122 - menuview.center .x)。
if語句與我嘗試了這些:
if(menuview.center.x >= 576);{...
等,但也失敗。
如果用戶發佈PanGesture
時當前的位置是UIViews
?
感謝,
克里斯
嗨夥計,感謝回答! 這段代碼似乎不適合我,恐怕。這是說我正在使用一個未識別的'發件人',所以我將它換成了我在handlePan方法中使用的'識別器'。這擺脫了紅色的錯誤,但沒有奏效。 它也不喜歡「translatedPoint.x」,給了我一個紅色的失敗錯誤,並問我是否想將它改爲「translation.x」。但即使在改變之後,它似乎並沒有奏效。 UIView滑動罰款,但dones't沒有回到現在的任何位置... – 2012-08-07 11:44:34
對不起,請參閱我的編輯。 – 2012-08-07 11:49:18
啊,你是英雄!我對這件事很陌生,以至於把所有的元素都綁在一起,在商店裏的.h和.m的所有元素都需要一段時間才能沉入。非常感謝你的幫助。 – 2012-08-07 22:58:54