3

我想做一个项目,我必须触摸一个点并将其与另一个点连接,然后将其连接到另一个点。当我将一个点与另一个点连接时,将在它们之间创建一条线。

实际上,当我单击/触摸一个点时,线条会显示,当我触摸第二个点时,线条会在两个点之间创建。

我还不能做到这一点,我正在网上尝试和搜索,但还没有找到解决方案。

这是我的需要 就像这个https://play.google.com/store/apps/details?id=zok.android.dots&hl=en

我认为这是由 UIGesture Recogniser 完成的?或者这是别的什么?我怎样才能做到这一点?

非常欢迎专家提出任何想法或建议。

4

4 回答 4

3

根据您的要求修改此代码

CGContextRef context = UIGraphicsGetCurrentContext();
UIColor *currentColor = [UIColor blackColor];
CGContextSetStrokeColorWithColor(context, currentColor.CGColor);
CGContextSetLineWidth(context, 2.0);
CGContextBeginPath(context);
CGContextMoveToPoint(context, touchStart.x, touchStart.y);
CGContextAddLineToPoint(context, touchEnd.x, touchEnd.y);
CGContextStrokePath(context);

@妮莎:

制作 and 的全局实例CGPoint touchStarttouchEnd像这样获取它们:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
touchEnd = CGPointZero;
touchStart = CGPointZero;
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self];
NSLog(@"start point >> %@",NSStringFromCGPoint(point));
    touchStart = point;
}

}

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

}
于 2013-05-13T07:05:55.933 回答
1

如果有可能,请使用 UI 触摸方法获取两个按钮的坐标。CGPoint您可以借助该方法在两个不同的位置找到触摸位置。touchedEnded查找触摸位置文档在这里

在您的视图上获得位置后UIButtons,您可以使用此方法在两者之间画线 -

- (void)drawRect:(CGRect)rect
{
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSaveGState(context);
    CGContextSetStrokeColorWithColor(context, [[UIColor blackColor]CGColor]);
    CGContextSetLineWidth(context, 1.0);
    CGContextMoveToPoint(context, startPoint.x, startPoint.y);
    CGContextAddLineToPoint(context, endPoint.x, endPoint.y);
    CGContextStrokePath(context);
    CGContextRestoreGState(context); 
}

希望这可以帮助

于 2013-05-13T07:48:32.897 回答
1

CGPoint您可以借助该touchedEnded方法将触摸的位置存储在两个不同的位置。

然后,当你有你的两个点时,你可以添加一个新的 UIView 作为子视图,它知道这两个点CGPoint并将在其drawRect方法中画一条线。或者在当前视图中执行它,通过调用[view setNeedsDisplay]触发它自己的drawRect方法。

看看这个链接

于 2013-05-13T07:07:32.350 回答
1

尝试以下步骤。

创建 UIView 的一个子类。在上面添加你的 UIButtons。

实施 Touches 委托,如 touchesBegan、moved、end。

在 touchesBegan 内部检查是否 touch isinsideview:myButton1 然后将标志设为真。

编辑:

UITouch *touch = [[UITouch alloc] init];
touch = [touches anyObject];
CGPoint point = [touch locationInView:self];

if(CGRectContainsPoint(myButton1.frame, point))
    NSLog(@"Inside myButton1");

另一种测试子视图是否被触摸击中的方法是

CGPoint pt = [[touches anyObject] locationInView:self.view];
UIView *touchedView = [self.view hitTest:pt withEvent:event];

内部触摸移动检查标志是否为真然后drawline()......并继续检查触摸是否在insideview:myButton2中。调用 setNeedsDisplay。

现在您将获得在 UIView 中绘制线条的多种方法和示例代码。只需应用上述逻辑即可。

于 2013-05-13T07:09:41.337 回答