Fine editing

di il
2 risposte

Fine editing

Salve, qualcuno potrebbe spiegarmi come far scomparire la keyboard di una uitextfield quando:
- si clicca sul tasto "invio"
- si clicca fuori dalla textfield.
io ho provato così per il secondo caso ma non funge
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    [textfield resignFirstResponder];
    [self.nextResponder touchesEnded:touches withEvent:event];
}
    
per il primo ho creato una ibAction connessa alla textfield e ho scritto nel file .m
- (IBAction)finetext:(id)sender{
    [textfield resignFirstResponder];
}
ma anche in questo caso nulla di fatto. grazie in anticipo, Speuk

2 Risposte

  • Re: Fine editing

    Hai 2 strade per intecettare il touch. La prima è quella di subclassare la tua view e fare l' override dei betodi sul touch, ma mi sembra una via eccessiva per il tuo caso. Il metodo che potresti provare è quello di usare un gesture recognizer sulla tua view, in questo modo:

    Nel viewDidLoad del tuo controller:
    
        UITapGestureRecognizer *touchOnView = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(fineText:)] autorelease];
        [self.view addGestureRecognizer:touchOnView];
    
    e sempre nel controller avrai il tuo ibaction:
    
    - (IBAction)finetext:(id)sender
    {
        [textfield resignFirstResponder];
    }
    
    Questo è in linea di massima il funzionamento. Tieni presente che è buona norma chiamare, quando ha finito, il metodo removeGestureRecognizer sulla view. Per farlo però ti occorre avere il tapGestureRecognizer come attributo di classe (come la textfield), in modo da mantenerne il riferimento. In teoria con l' autorelease se non erro dovrebbe farlo da solo quando la view viene rilasciata, però se lo fai tu sei più sicuro.
  • Re: Fine editing

    Grazie mille, ora non ne ho il tempo ma ti farò sapere se funziona
Devi accedere o registrarti per scrivere nel forum
2 risposte