2010-11-01 4 views
0

У меня есть список UITextFields.Помогите мне на UITextField

Я хочу перейти к следующим текстовым полям один за другим после ввода ввода в него.

, так как клавиатура скрывает поля ....

может вы люди показать мне, что как я могу добиться этого ...

Спасибо большое за ваше время.

ответ

2
  • (пустоты) shiftViewUp: (BOOL) до {

[UIView beginAnimations: контекст ноль: NULL];

[UIView setAnimationDuration:0.3]; 

CGRect rect = self.view.frame; 
if (movedUp) 
{ 

    if(rect.origin.y == 0){ 
     rect.origin.y -= 85.0; 
     rect.size.height += 85.0; 
    } 
} 
else 
{ 

    if(rect.origin.y != 0.0){ 
     rect.origin.y += 85.0; 
     rect.size.height -= 85.0; 
    } 
} 

self.view.frame = rect; 

[UIView commitAnimations]; 

}

В принципе вы можете вызвать этот метод с BOOL YES, когда вы начать редактирование textfiled & с BOOL нет при завершении редактирования. Вам просто нужно отслеживать, какое текстовое поле редактируется на основе того, что вы можете настроить сдвиг (например, здесь 85)

1

Альтернативным подходом может быть использование UITableView. Затем большинство элементов управления готовы. Но вы также можете сделать все это самостоятельно.

Сначала поставьте UITextfields на отдельный UIView. Сделайте UIView розеткой, чтобы связать ее правильно. Таким образом вы можете легко перемещать текстовые поля с помощью анимации.

Затем сделать что-то подобное в методах делегата:

// Sets the label of the keyboard's return key to 'Done' when the insertion 
// point moves to the table view's last field. 
// 
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField 
{ 
    if ([textField tag] == myLastUITextField) 
{ 
    [textField setReturnKeyType:UIReturnKeyDone]; 
} 
    return YES; 
} 

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    if ([textField returnKeyType] != UIReturnKeyDone) 
{ 
    // If this is not the last field (in which case the keyboard's 
    // return key label will currently be 'Next' rather than 'Done'), 
    // just move the insertion point to the next field. 
    // 
    NSInteger nextTag = [textField tag] + 1; 

    UIView *nextTextField = [myTextView viewWithTag:nextTag]; 

    // here starts your animation code 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3]; 
    CGRect rect = textFieldView.frame; 
    rect.origin.y = -44; 
    textFieldView.frame = rect; 
    [UIView commitAnimations];   
    // here ends your animation code. Play with it 
    [nextTextField becomeFirstResponder]; 
    } 
else 
{ 
    // do what you want to do with the last UITextfield 
} 
    return YES; 
} 

`

Я думаю, что это не будет работать сразу по копирования оклейки, но я надеюсь, что это указывает в направлении. Удачи

Смежные вопросы