我不是要求givemesamplecodenow响应,只是在正确的方向微调将不胜感激。我的搜索没有任何好处。拖放UIButton但限制到边界
我有一个UIButton,我可以在屏幕上自由移动。
我想限制这个对象的拖动区域,所以它只能上下或左右移动。我相信我需要获得边界的x,y坐标,然后限制在该区域之外的移动。但是,这是我得到的。我的知识并没有比这更进一步。
有没有人在过去实现过类似的东西?
亚当
我不是要求givemesamplecodenow响应,只是在正确的方向微调将不胜感激。我的搜索没有任何好处。拖放UIButton但限制到边界
我有一个UIButton,我可以在屏幕上自由移动。
我想限制这个对象的拖动区域,所以它只能上下或左右移动。我相信我需要获得边界的x,y坐标,然后限制在该区域之外的移动。但是,这是我得到的。我的知识并没有比这更进一步。
有没有人在过去实现过类似的东西?
亚当
所以我们可以说你在拖拽操作的中间是。通过将其中心设置为引起运动的任何手势的中心,您都可以移动按钮实例。
如果您不喜欢,可以通过测试手势中心和重置中心值来施加限制。下面假定一个按钮连接到所有触摸拖动事件的动作,但如果使用手势识别器或touchesBegan:和朋友,则该原则仍然适用。
- (IBAction)handleDrag:(UIButton *)sender forEvent:(UIEvent *)event
{
CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
if (point.y > 200)
{
point.y = 200; //No dragging this button lower than 200px from the origin!
}
sender.center = point;
}
如果你想要一个按钮,滑动只在一个方向,那是很容易:
- (IBAction)handleDrag:(UIButton *)sender forEvent:(UIEvent *)event
{
CGPoint point = [[[event allTouches] anyObject] locationInView:self.view];
point.y = sender.center.y; //Always stick to the same y value
sender.center = point;
}
或者你想要的按钮拖动只有特定视图的区域内。如果你的界限很复杂,这可能会更容易定义。
- (IBAction)handleDrag:(UIButton *)sender forEvent:(UIEvent *)event
{
CGPoint point = [[[event allTouches] anyObject] locationInView:self.someView];
if ([self.someView pointInside:point withEvent:nil])
{
sender.center = point;
//Only if the gesture center is inside the specified view will the button be moved
}
}
想必你会使用touchesBegan:
,touchesMoved:
等,所以应尽可能测试,简单触摸点是否是你的看法在touchesMoved:
边界之外。如果在外面,请忽略它,但如果它在里面,请调整按钮的位置。
我怀疑你会发现这个功能很有用:
bool CGRectContainsPoint (CGRect rect, CGPoint point);
绝对的辉煌,工作过一种享受。 –