Фильтрация символов ввела в UITextField

Вы можете сделать:

import inspect

mydict = {'one': 1, 'two': 2}

source = inspect.getsourcelines(inspect.getmodule(inspect.stack()[0][0]))[0]
print [x for x in source if x.startswith("mydict = ")]

Также: убедитесь, что не скрываете встроенный диктет!

12
задан teabot 18 June 2009 в 16:25
поделиться

4 ответа

Посмотрите на textField: shouldChangeCharactersInRange

Этот метод вызывается UITextFieldDelegate всякий раз, когда вводятся новые символы или существующие символы удаляются из текстового поля. Вы можете вернуть NO, чтобы запретить изменение.

14
ответ дан 2 December 2019 в 03:43
поделиться

Вы можете зацикливаться и продолжать проверять, изменилось ли свойство UITextField.text после вызова метода DidBeginEditing. Если да, проверьте текст и удалите недопустимые символы.

-6
ответ дан 2 December 2019 в 03:43
поделиться

Посмотрите на метод UITextViewDelegate - (BOOL) textField: (UITextField *) textField shouldChangeCharactersInRange: (NSRange) range replacementString: (NSString10 *) ].

Это именно то, что вам нужно.

2
ответ дан 2 December 2019 в 03:43
поделиться

Я сделал, как предлагал marcc, и это сработало. Ниже приводится пример реализации.

Примечание: Имена переменных были выбраны для краткости и не отражают мои стандарты кодирования:

    ...
    myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"xyzXYZ"];
    ...
}

- (BOOL) textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)textEntered {
    for (int i = 0; i < [textEntered length]; i++) {
        unichar c = [textEntered characterAtIndex:i];
        if (![myCharSet characterIsMember:c]) {
            return NO;
        }
    }
    return YES;
}
25
ответ дан 2 December 2019 в 03:43
поделиться