Question

Je veux permettre à l'utilisateur dessiner une signature sur l'écran iPhone, donc j'ajouter une sous-classe de UIView et ajouter du code à sa méthode « touchesMoved ».


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

}

Je dessine avec de petits rectangles et il se révèle être point par point. Comme il est trop laid, je veux dessiner la signature avec des lignes. Mais comment distinguer FirstTouch et lastTouch? Si je n'utilise la méthode « touchesMoved », je ne peux obtenir un point de contact.

Était-ce utile?

La solution

par UIResponder Référence de la classe , vous aurez également besoin de mettre en œuvre
– touchesBegan:withEvent: et
– touchesEnded:withEvent:.
Après avoir implémenté ces méthodes, vous devriez être en mesure d'obtenir suffisamment de données pour mettre en œuvre une courbe de Bézier frayage ou toute autre solution appropriée.

[ modifier ] Une solution peut-être mieux serait d'être pour obtenir les touches directement à partir de l'objet UIEvent une fois que votre contrôleur reçoit un
– touchesMoved:withEvent: notification. En outre, l'exemple de code GLPaint peut également se révéler utile.

Autres conseils

Comme l'exemple de code GLPaint peut être trop compliqué pour les débutants, je trouve cette tutoriel . Il est simple à apprendre pour la plupart des débutants.

Gardez à l'esprit qu'une signature écrite avec son doigt va être différent d'un écrit avec un instrument d'écriture. Vous voudrez peut-être repenser ce que vous utilisez la signature, et si elle est aussi obligatoire que vous avez besoin d'être.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top