iPhone: Ersetzen einer Ansicht der Zelle mit UITextField

stimmen
0

Ich versuche im Grunde eine UITextField zu einem UITableViewCell auf Tableview hinzuzufügen: commitEditingStyle: forRowAtIndexPath :. Am Einsatz möchte ich eine UITextField über die bestehende Zelle hinzuzufügen.

Ich Setup das Textfeld mit etwas wie folgt aus:

-(void) setUpIndexField {
    inputField = [[UITextField alloc] init];
    inputField.textAlignment = UITextAlignmentCenter;
    inputField.borderStyle = UITextBorderStyleRoundedRect;    
    inputField.keyboardType = UIKeyboardTypeNamePhonePad;
    inputField.delegate = self;
 }

Dann in commitEditingStyle, habe ich etwas wie:

- (void)tableView:(UITableView *)tv
    commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
    forRowAtIndexPath:(NSIndexPath *)indexPath 
{
    NSInteger row = [indexPath row];
    if (editingStyle == UITableViewCellEditingStyleInsert) {
    if (row == 0) {
        UITableViewCell *cell = [tv cellForRowAtIndexPath:indexPath];
        inputField.frame = [tv cellForRowAtIndexPath:indexPath].frame;
        [cell.contentView addSubview:inputField];
        [inputField becomeFirstResponder];
        return;
    }
// more code etc.
}

Wenn ich auf dem Accessor Einfügen klicken (+), wird das Textfeld in der Tat auf den Bildschirm plumpst, aber nicht, wo in der Nähe der Zelle, die es einen Klick wird. Es geht in einen zufälligen Teil des UIView, nicht die eigentlichen Zelle für die indexPath aus an, wo die + geklickt wurde.

Insight auf, wo ich schief gelaufen ist und wie ich die UITextField auf die Zelle platzieren kann, wo die + geklickt wurde wäre ideal.

Veröffentlicht am 23/02/2009 um 22:42
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
1

Sie setzen den Rahmen inputFieldmit dem Rahmen der Zelle, die nicht tun , was Sie wollen. Ansichten innerhalb der Zelle der oberen linken Ecke des Rahmens verwenden , wie 0,0. Ihr Textfeld Rahmen sollte sein:

inputField.frame = CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height);

Da das ist relativ zu dieser Superview, die das Textfeld platzieren werden, so dass es es vollständig die anderen Ansichten in dieser Zelle deckt.

Beantwortet am 23/02/2009 um 22:50
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more