Domanda

Ho una visione tabella che ha incorporato UITextFields per l'inserimento di alcuni dati. Essa ha anche altri due campi che PopUp un UIPickerView e UIDatePicker -. Come dimostrato nell'esempio DateCell da Apple

Per lo più funziona, ma non riesco a capire come la transizione in modo pulito dalla tastiera campo di testo agli altri raccoglitori - uno scivola fuori, uno slide in - sembra strano e la posizione di scorrimento sulla visualizzazione della tabella a volte si fa scopare fino -. con tutto scorrere la parte superiore

Quello che mi piacerebbe fare è sostituire la tastiera campo di testo senza di essa l'animazione di distanza e senza di essa cresce la visualizzazione della tabella di nuovo a grandezza naturale.

Eventuali indizi?

È stato utile?

Soluzione

Per prima cosa, ecco un screencapture che mostra come questo sembra.

Implementare UITextFieldDelegate e visualizzare un "pop-up" che contiene un UIPickerView.

- (void)textFieldDidEndEditing:(UITextField *)textField {

    UIPickerView *picker = [[UIPickerView alloc] 
                                 initWithFrame:CGRectMake(0, 244, 320, 270)];
    picker.delegate = self;
    picker.dataSource = self;
    [self.view addSubview:picker];
    [picker release];
}

Quando la tastiera scompare, la vista selettore è quindi visibile.

Se si vuole prendere questo un po 'più lontano, è possibile animare la "slide in" UIPickerView come la tastiera.

- (void)viewDidLoad {

    //picker exists in the view, but is outside visible range
    picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 480, 320, 270)];
    picker.delegate = self;
    picker.dataSource = self;
    [self.view addSubview:picker];
    [picker release];
}

//animate the picker into view
- (void)textFieldDidEndEditing:(UITextField *)textField {

    [UIView beginAnimations:@"picker" context:nil];
    [UIView setAnimationDuration:0.5];

    picker.transform = CGAffineTransformMakeTranslation(0,-236);
    [UIView commitAnimations];

}

//animate the picker out of view
- (void)textFieldDidBeginEditing:(UITextField *)textField {

    [UIView beginAnimations:@"picker" context:nil];
    [UIView setAnimationDuration:0.5];

    picker.transform = CGAffineTransformMakeTranslation(0,236);
    [UIView commitAnimations];
}

//just hide the keyboard in this example
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

Altri suggerimenti

Situato a soli immobili inputView del UITextField ad un UIPickerView.

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