2013-12-24 2 views
0

Я пытаюсь создать следующую кнопку, которая работает с тегом textField. Я это внутри метода типа пустоты:Создание общей следующей кнопки для UITextField

for (UITextField *textField in self.view.subviews) 
{ 
    if ([textField isKindOfClass:[UITextField class]]) 
    { 
     if([textField isFirstResponder]) 
     { 
      int i = _textFieldTag; //starts as 0 

      [[textField viewWithTag:i] resignFirstResponder]; 
      NSString *a = [(UITextField *)[textField viewWithTag:i] text]; 
      NSLog(@"TEXT 01 - %@", a); 

      i = i + 1; 
      NSLog(@"TAG 02 - %i", i); 

      [[textField viewWithTag:i] becomeFirstResponder]; 
      NSString *b = [(UITextField *)[textField viewWithTag:i] text]; 
      NSLog(@"TEXT 02 - %@", b); 
     } 
    } 
} 

Проблема заключается в том, что даже если i увеличивается на 1, NSString *b возвращает NIL и не делает, что TextField следующий Ответчик, как я ожидал.

Они есть, тег существует, но почему-то новое значение i не принимается.

Любые идеи?

ответ

0

Неправильная логика, и, как сказал @Greg, вам нужно использовать [self.view viewWithTag:i], чтобы получить правильный вид. Кроме того, дайте self.view тег, который отличается от любого из тегов текстовых полей (вы получили сообщение об ошибке, потому что self.view имеет тег по умолчанию 0). Я думаю, что вы хотите, чтобы ваша логика выглядеть следующим образом:

-(IBAction)nextField:(id)sender { 
    int i; 
    for (UITextField *textField in self.view.subviews) { 
     if ([textField isKindOfClass:[UITextField class]] && [textField isFirstResponder]) { 
      [textField resignFirstResponder]; 
      NSString *a = textField.text; 
      NSLog(@"TEXT 01 - %@", a); 
      //i = textField.tag + 1; // use this line if you don't want to go back to the first text field 
      i = (textField.tag == 4)? 0 : textField.tag + 1; //use this line if you want to cycle back to the first text field when you are on the last one. Replace the 4 with whatever is your highest tag. This also assumes that the tag of the first text field is 0. 
     } 
    } 

    NSLog(@"TAG 02 - %i", i); 
    [[self.view viewWithTag:i] becomeFirstResponder]; 
    NSString *b = [(UITextField *)[self.view viewWithTag:i] text]; 
    NSLog(@"TEXT 02 - %@", b); 
} 
2

Попробуйте заменить все Вашего звонка от:

[textField viewWithTag:i] 

к:

[self.view viewWithTag:i] 

Вы должны спросить мнение для viewWithTag не UITextField.

+0

К сожалению, что сделал приложение авария –

+0

***, истекающее приложение из-за неперехваченное исключение «NSInvalidArgumentException», причина: «- [UIView текст]: непризнанный селектор отправленного в пример 0x8c15ca0 ' –

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