限制UIButton沿UIBezierPath路径的移动

时间:2013-11-19 08:55:48

标签: ios objective-c uibezierpath

我有一个通告UIBezierPath。我使用该路径在我的视图上绘制一个圆圈,以创建一个24小时制的轮廓。我有一个UIButton,其位置取决于当前时间。按钮的作用就像一只时针。我希望用户能够沿着圆形路径移动UIButton。我称之为“访问未来/过去”功能。如何限制按钮移动到我的路径?

2 个答案:

答案 0 :(得分:1)

在视图中覆盖touchesBegan:touchesMoved:方法

- (void)touchesBegan: (NSSet *)touches withEvent:(UIEvent *)event 
{
   if([[event touchesForView:button] count])
   {
       //User is trying to move the button set a variable to indicate this.
   }
}



- (void)touchesMoved: (NSSet *)touches withEvent:(UIEvent *)event 
{
    CGPoint *point = [[event anyObject] locationInView:self];

    /*Compare x and y coordinates with the centre property of the button 
      If x or y are greater set center of button to next point in circle or previous
      point if any of them are lesser.*/
}

请注意,在尝试此操作之前,您必须在数组中保存圆中的所有点,否则您必须通过了解半径来计算圆周上的点。

答案 1 :(得分:0)

最简单的方法是在touchesMoved中,您可以使用以下方法检查忽略圆圈视图中没有的触摸:

CGPoint point = [touch locationInView:circleView];

if (![circleView pointInside:point withEvent:event]) {
     return;
}