UITextField, автоматически переходить к следующему после 1 символа

Проверьте свой файл web.config для какой-либо ссылки на него и исправьте его. Это может быть псевдоним, который вы определили неправильно.

Этот ответ может решить вашу проблему.

13
задан WrightsCS 12 February 2014 в 00:03
поделиться

1 ответ

Я нашел решение, изменив код, который нашел здесь: http://www.the cheapprogrammer.com/2010/03/customizing-uitextfield-formatting-for.html

Сначала установите контроллер представления как делегат текстовых полей.

Затем сделайте что-нибудь вроде этого:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{   
    BOOL shouldProcess = NO; //default to reject
    BOOL shouldMoveToNextField = NO; //default to remaining on the current field

    int insertStringLength = [string length];
    if(insertStringLength == 0){ //backspace
        shouldProcess = YES; //Process if the backspace character was pressed
    }
    else {
        if([[textField text] length] == 0) {
            shouldProcess = YES; //Process if there is only 1 character right now
        }
    }

    //here we deal with the UITextField on our own
    if(shouldProcess){
        //grab a mutable copy of what's currently in the UITextField
        NSMutableString* mstring = [[textField text] mutableCopy];
        if([mstring length] == 0){
            //nothing in the field yet so append the replacement string
            [mstring appendString:string];

            shouldMoveToNextField = YES;
        }
        else{
            //adding a char or deleting?
            if(insertStringLength > 0){
                [mstring insertString:string atIndex:range.location];
            }
            else {
                //delete case - the length of replacement string is zero for a delete
                [mstring deleteCharactersInRange:range];
            }
        }

        //set the text now
        [textField setText:mstring];

        [mstring release];

        if (shouldMoveToNextField) {
            //
            //MOVE TO NEXT INPUT FIELD HERE
            //
        }
    }

    //always return no since we are manually changing the text field
    return NO;
}
19
ответ дан 1 December 2019 в 19:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: