Мне нужно обработать перемещение по нескольким UITextField
с помощью кнопки (Next/Done), и теперь у меня есть разрешить только один текст/число в каждом UITextField
, как мы могли бы сделать это в UITextField
, как показано на изображении нижеКак я могу разрешить UITextField иметь только один текст/номер и перемещаться по нескольким `UITextField` с помощью кнопки Next/Done
Я использовал следующий код недавно, и был в состоянии достигнуть тоже, но есть проблема, что когда я первый войти текст/номер в UITextField
вводится в UITextField
, и когда я введу следующий текст/номер во второй раз он используется только для того, чтобы нажать на следующий UITextField
. Я хочу добиться в том, что, когда я ввести текст/число во второй раз она должна быть прижата к следующим UITextField
, а также значение должно быть введено в следующем UITextField
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag<10) {
if ((textField.text.length >= 1) && (string.length > 0))
{
NSInteger nextText = textField.tag + 1;
// Try to find next responder
UIResponder* nextResponder = [textField.superview viewWithTag:nextText];
if (! nextResponder)
[textField resignFirstResponder];
// nextResponder = [textField.superview viewWithTag:1];
if (nextResponder){
// Found next responder, so set it.
[nextResponder becomeFirstResponder];
return NO;
}
}
}
return YES;
}
Я решить мою проблему, используя следующий код, но У меня есть еще одна проблема слева. Для последнего UITextField мне нужно его resignFirstResponder сразу после его заполнения. Но в настоящее время, когда он заполнить и пользовательский нажмите следующий текст только тогда resignFirstResponder происходит
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag<10) {
if ((textField.text.length >= 1) && (string.length > 0))
{
NSInteger nextText = textField.tag + 1;
UIResponder* nextResponder = [textField.superview viewWithTag:nextText];
if (! nextResponder)
[textField resignFirstResponder];
if (nextResponder){
[nextResponder becomeFirstResponder];
UITextField* nextTextfield= (UITextField*) [textField.superview viewWithTag:nextText];
if ((nextTextfield.text.length < 1)){
[nextTextfield setText:string];
}
return NO;
}
}
}
return YES;
}
спасибо его работа идеального –
я модифицировал этот вопрос вы можете мне помочь чтобы решить недавнюю проблему –
Привет, вы можете сделать это, добавив два UITextField * nextTextfield = (UITextField *) [textField.superview viewWithTag: nextText]; [nextTextfield setText: string]; line после [nextResponder станет первымResponder]; line отредактированный ответ – user1548843