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