2009-08-11 3 views
0

В окне добавления/редактирования приложения «Контакты», если вы нажали клавишу «Возврат» в поле, вы просматриваете каждый из UITextFields. Кажется, что эти поля находятся внутри UITableViewCell. Каков хороший способ сделать это?Перемещение между UITextFields в UITableViewCell

Когда у меня есть серия UITextFields, не внутри таблицы, я могу вызвать , чтобы получить список просмотров и использование, которые можно циклически перебирать через них. Но внутри таблицы я получаю только одно представление, и я не уверен, как его преобразовать.

-(BOOL)textFieldShouldReturn:(UITextField *)textField { 
    // Find the next entry field 
    for (UIView *view in [self entryFields]) { 
     if (view.tag == (textField.tag + 1)) { 
      [view becomeFirstResponder]; 
      break; 
     } 
    } 

    return NO; 
} 

/* 
Returns an array of all data entry fields in the view. 
Fields are ordered by tag, and only fields with tag > 0 are included. 
Returned fields are guaranteed to be a subclass of UIResponder. 

From: http://iphoneincubator.com/blog/tag/uitextfield 
*/ 
- (NSArray *)entryFields { 
    if (!entryFields) { 
     self.entryFields = [[NSMutableArray alloc] init]; 
     NSInteger tag = 1; 
     UIView *aView; 
     while (aView = [self.view viewWithTag:tag]) { 
      if (aView && [[aView class] isSubclassOfClass:[UIResponder class]]) { 
       [entryFields addObject:aView]; 
      } 
      tag++; 
     } 
    } 
    return entryFields; 
} 

ответ

0

Только что обнаружил это при просмотре чего-то себя - извините за задержку.

Если вы не решили проблему, вы можете создать массив объектов uitextfield в том же порядке, что и на экране. Когда вы создаете таблицу, задайте свойство .tag текстового поля. Внутри метода делегата текстового поля - прочитайте тег, увеличьте значение на 1 (чтобы перейти к следующему полю) и выполните вызов startfirstresponder.

Вы также можете просмотреть метод делегата textFieldDidEndEditing.

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