3

あるドットに触れて別のドットに接続し、その後別のドットに接続する必要があるプロジェクトを作成したいと考えています。ある点と別の点を接続すると、それらの間に線が作成されます。

実際には、1 つの点をクリック/タッチすると線が表示され、2 つ目の点をタッチすると 2 つの点の間に線が作成されます。

私はまだこれを行うことができません。ネットで検索しようとしていますが、まだ解決策を見つけることができません。

これは私の必要性です

これは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);

@ニシャ:

CGPoint touchStartandのグローバル インスタンスを作成し、次のtouchEndように取得します。

- (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

CGPointメソッドを使用して、タッチした場所を 2 つの異なる場所に保存できますtouchedEnded

次に、2つのポイントがある場合、2つを認識し、そのメソッドCGPointで線を描画するサブビューとして新しいUIViewを追加できます。または、独自の drawRect メソッドをトリガーするためdrawRectに呼び出して、現在のビューで実行します。[view setNeedsDisplay]

このリンクをチェックしてください。

于 2013-05-13T07:07:32.350 に答える
1

可能であれば、UI タッチ メソッドで 2 つのボタンの座標を取得してください。CGPointメソッドの助けを借りて、2 つの異なる場所でタッチされた場所を見つけることができます。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

以下の手順を試してください。

UIView のサブクラスを 1 つ作成します。その上に UIButtons を追加します。

touchesBegan、moved、end などの Touches デリゲートを実装します。

Inside touchesBegan は touch isinsideview:myButton1 かどうかをチェックし、フラグを true にします。

編集:

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];

内部タッチが移動した場合、フラグが true かどうかを確認してから drawline()... タッチが insideview:myButton2 にあるかどうかを確認し続けます。setNeedsDisplay を呼び出します。

これで、UIView で線を描画するためのいくつかの方法とサンプル コードが得られます。上記のロジックを適用するだけです。

于 2013-05-13T07:09:41.337 に答える