Странные проблемы с меткой 0? - PullRequest
1 голос
/ 31 января 2012

Я создал панель над клавиатурой для текстовых полей с выбором кнопок «предыдущий / следующий / сделанный». При этом я заметил странное вхождение в мои теги, которые я использовал для перемещения между текстовыми полями. Я создаю свой интерфейс программно с помощью цикла, и поэтому просто устанавливаю значения тега для переменной цикла i.

Я начал переменную i с 0, поэтому в самом первом созданном текстовом поле был тег ноль. По сути, то, что происходило, это то, что функциональность «предыдущей» кнопки опустилась бы только до 1. Она даже не вернулась бы к текстовому полю с тегом 0. Единственный способ исправить это - увеличить все значения тега на 1, чтобы первое текстовое поле начиналось с 1, а не с нуля.

Вот мой код. Есть ли в моем коде ошибка, которую я не вижу? или это странная проблема с тегами?

    -(void)gotoPrevTextfield{
// If the active textfield is the first one, can't go to any previous
// field so just return.
 UITextField *textField =  (UITextField *)[inputsView viewWithTag:0];
NSLog(@"%i",textField.tag);
NSLog(@"%i",txtActiveField.tag);
if (txtActiveField == textField) {
    NSLog(@"returning at previous");
    return;
}
else {
    NSLog(@"set responder");
    // Otherwise if a different textfield has the focus, the operation
    // of "previous" button can be done and set the previous as the first
    // responder.
    textField = (UITextField *)[inputsView viewWithTag:txtActiveField.tag - 1];
    NSLog(@"%i",textField.tag);
    NSLog(@"%i",txtActiveField.tag);
    [textField becomeFirstResponder];
}

}

1 Ответ

2 голосов
/ 31 января 2012

Обратите внимание, что для unset тэгов по умолчанию установлено значение 0, так что это почти плохой выбор.Возможно, вы получаете другое представление, которое вы не ожидаете.

Довольно хорошая практика - добавить некоторую константу, например, 100, рассмотрите возможность сделать константу const int или #define для ясности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...