XCode 4.2を使用して、UIGestureRecognisersを理解しようとしています。これまでのところ、すべてがかなり順調に進んでいるようですが、まだいくつかの問題があります。
スワイプジェスチャ認識機能を使用していたときは、すべてが正常で、さまざまな方向へのスワイプを認識し、継続的に認識していました。私の問題は、パンジェスチャ認識機能を使用すると、最初のパンスワイプがうまく認識されても、それ以上のジェスチャを受け入れることを拒否することです。そのため、必要に応じてアイテムを1回程度移動できますが、その後は何もできません。
ジェスチャーを次のように設定します。
UIPanGestureRecognizer *panBody = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panBody:)];
[bodyGestureView addGestureRecognizer:panBody];
次に、これはすべてを処理する私の「panBody」メソッドです。
- (void)panBody:(UIPanGestureRecognizer *)recognizer
{
CGPoint translate = [recognizer translationInView:self.view];
CGRect bodyPanelFrame = bodyPanel.frame;
bodyPanelFrame.origin.x += translate.x;
bodyPanelFrame.origin.y += translate.y;
recognizer.view.frame = bodyPanelFrame;
CGRect topPanelFrame = topPanel.frame;
topPanelFrame.origin.x += translate.x;
topPanelFrame.origin.y += translate.y;
recognizer.view.frame = topPanelFrame;
CGRect sidePanelFrame = sidePanel.frame;
sidePanelFrame.origin.x += translate.x;
sidePanelFrame.origin.y += translate.y;
recognizer.view.frame = sidePanelFrame;
NSLog(@"Panning");
if (recognizer.state == UIGestureRecognizerStateEnded)
{
bodyPanel.frame = bodyPanelFrame;
if((topPanel.frame.origin.x + translate.x) <= 193)
{
topPanel.frame = CGRectMake(topPanelFrame.origin.x, topPanel.frame.origin.y, topPanel.frame.size.width, topPanel.frame.size.height);
}
else
{
topPanel.frame = CGRectMake(193, 0, topPanel.frame.size.width, topPanel.frame.size.height);
NSLog(@"Top panel not in frame");
}
if((sidePanel.frame.origin.y + translate.y) < 57)
{
sidePanel.frame = CGRectMake(sidePanel.frame.origin.x, sidePanelFrame.origin.y, sidePanel.frame.size.width, sidePanel.frame.size.height);
}
else
{
sidePanel.frame = CGRectMake(0, 56, sidePanel.frame.size.width, sidePanel.frame.size.height);
NSLog(@"Side panel not in frame");
}
}
}
bodyPanel、topPanel、sidePanelは、インターフェイスの上部にオーバーレイされたUIViewにリンクされたIBOutletsです。xib
誰かがこの情報に光を当てることができれば、それは私が何が起こっているのか全くわからない大きな原因になるでしょう!
ありがとう、
マット