2009-03-25 11 views
2

私は、ユーザーがiPhoneの画面に署名を描くようにしたいので、UIViewのサブクラスを追加し、そのtouchesMovedメソッドにコードを追加します。iPhoneの画面に線で署名を描くには?


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

    CGSize mySize = CGSizeMake(5, 5); 
    UIGraphicsBeginImageContext(mySize);          
    CGContextRef ctx = UIGraphicsGetCurrentContext();      

    CGContextBeginPath(ctx);             
    CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);        
    CGContextAddRect(ctx, CGRectMake(0, 0, 5, 5));       
    CGContextFillPath(ctx);             

    UIImage *redRect = UIGraphicsGetImageFromCurrentImageContext();   
    UIGraphicsEndImageContext();            

    UIImageView *redRectView = [[UIImageView alloc] initWithImage:redRect]; 
    redRectView.center = CGPointMake(firstTouch.x, firstTouch.y);        
    [self addSubview:redRectView];          

} 

小さな四角で描画していますが、ドットで表示されています。あまりにも醜いので、私はラインで署名を描きたい。しかし、firstTouchとlastTouchを区別する方法は?私が 'touchesMoved'メソッドだけを使用すると、私は1つのタッチポイントしか得ることができません。

答えて

3

UIResponder Class Reference 1として、あなたはまた、
– touchesBegan:withEvent:– touchesEnded:withEvent:
を実装する必要があります。
これらのメソッドを実装したら、パスベジェ曲線またはその他の適切なソリューションを実装するのに十分なデータを取得できるはずです。

[編集]、おそらくよりよい解決策は、コントローラが
– touchesMoved:withEvent:通知を受信するとUIEventオブジェクトから直接に接触を得るためであると考えられます。また、GLPaint sample codeも役に立ちます。

2

GLPaintサンプルコードが初心者にとって複雑すぎるかもしれないので、this tutorialが見つかりました。ほとんどの初心者のために学ぶのは簡単です。

0

指で書かれた署名は、筆記具で書かれたものとは異なることに注意してください。署名を使用しているものと、それが必要とするように拘束力があるかどうかを再検討することができます。

+0

あなたのヒントありがとうございます。このシグネチャは、私のアプリケーションの追加機能として使用されています。ユーザーを特定する唯一の方法ではありません。 –

関連する問題