ビュー内にサブビュー (赤いバー) が配置されています。親ビュー内のパン領域を制限し、絶対に水平または垂直のみに制限したい。もちろん、親ビューの外ではありません。
パン イベントを処理するコードをいくつか試してみましたが、赤いバーをドラッグできる場合があります。なにか提案を?
-(void)handleMoveLineView:(UIPanGestureRecognizer *)recognizer{
CGPoint sPoint= [recognizer locationInView:self.groundView];
CGPoint newCenter = [recognizer translationInView:self.groundView];
NSLog(@"X0 = %f, Y0 = %f", newCenter.x, newCenter.y);
if([recognizer state] == UIGestureRecognizerStateBegan) {
beginX = recognizer.view.center.x;
beginY = recognizer.view.center.y;
}
for (UIView *view in viewArrayGroundView) {
if (CGRectContainsPoint(view.frame, sPoint)) {
//Limit not out side parent view
if (beginX + newCenter.x != view.frame.size.width /2) {
newCenter = CGPointMake(view.frame.size.width /2, beginY + newCenter.y);
}
//Limit top - since the redbar height is 3
else if((beginY + newCenter.y < view.frame.origin.y + 3)){
newCenter.y = view.frame.origin.y + 3;
}
//Limit bottom
else if((beginY + newCenter.y > view.frame.size.height - 3)){
newCenter.y = view.frame.origin.y - 3;
}
}
}
[recognizer.view setCenter:newCenter];
NSLog(@"X = %f, Y = %f", newCenter.x, newCenter.y);
}