Domanda

Voglio lasciare all'utente disegnare una firma su schermo di iPhone, quindi aggiungo una sottoclasse di UIView e aggiungere del codice al suo metodo '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];                                      

}

sto disegnando con piccoli rettangoli e si scopre essere punto per punto. Come è troppo brutto, vorrei richiamare la firma con le linee. Ma come distinguere FirstTouch e lastTouch? Se uso unico metodo 'touchesMoved', posso solo ottenere uno punto di contatto.

È stato utile?

Soluzione

Come per il UIResponder Class Reference , sarà anche necessario implementare
– touchesBegan:withEvent: e
– touchesEnded:withEvent:.
Dopo aver implementato questi metodi, si dovrebbe essere in grado di ottenere dati sufficienti per implementare una curva pathing Bezier o altra soluzione adatta.

[ modifica ] Una soluzione migliore sarebbe forse essere quello di ottenere i tocchi direttamente dall'oggetto UIEvent una volta che il controller riceve un
– touchesMoved:withEvent: notifica. Inoltre, il codice di esempio GLPaint può anche rivelarsi utile.

Altri suggerimenti

Mentre il codice di esempio GLPaint potrebbe essere troppo complicato per i principianti, trovo questo tutorial. E 'semplice da imparare per la maggior parte dei principianti.

Tenete a mente che una firma scritto con un dito sta per essere diverso da quello scritto con uno strumento di scrittura. Si consiglia di ripensare ciò che si sta utilizzando la firma per, e se è come vincolante come è necessario che sia.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top