0
我有一個非常簡單的代碼用於拖放和繪圖。在視圖中拖動視圖,將其限制在內
三個視圖:根視圖基本上是窗口(帶有幾個界面控件)。其中,我有一個「畫布」視圖。在畫布視圖中,我有第三個視圖(一個角色的小圖形),用戶可以在畫布內「拖動」。拖動工作正常。
問題是,我似乎無法約束我的「人物」在畫布的範圍內。理想情況下,當他跑到畫布邊緣時,他應該停下來(不會溢出到根視圖中)
畫布視圖剪輯子視圖;所以他一旦超越邊緣就會消失 - 但我不希望他消失,我希望他不能再進一步。
我也在我的動畫之前調用了CGRectIsWithinRect,這在原則上應該做到這一點。問題在於動畫發生時角色的框架沒有更新 - 只要他已經在移動,他就會繼續向右側移動頁面。
-(void) touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UIView * charView = [[canvasView floatingView] retain];
CGPoint pt = [[touches anyObject] locationInView:canvasView];
if (CGRectContainsPoint([canvasView bounds], pt)) {
CGRect charFrame = charView.frame;
CGRect containerFrame = canvasView.frame;
BOOL inTheYard= CGRectContainsRect(containerFrame, charFrame);
if (inTheYard == NO) {
//if we're at the edge, don't go any further
return;
}
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:.2];
CGFloat x = floatingView.center.x + (pt.x - startPoint.x);
CGFloat y = floatingView.center.y + (pt.y - startPoint.y);
CGPoint middle = CGPointMake(x,y);
floatingView.center = middle;
[UIView commitAnimations];
[floatingView release];
}
}
我該如何阻止他移動超過他的監視邊緣?