Как я могу ограничить префикс строки textField
.
Я хочу, чтобы текстовое поле имело строку префикса по умолчанию (AAAA-).
(AAAA- после добавления пользователем строки)
И пользователь не может удалить эту строку, пользователь может добавить строку в textField
.
Как я могу использовать нижеприведенный метод делегата для достижения эффекта?
-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
}
Я не хочу настраивать модальный вид для достижения этого эффекта.
Может ли какой-то метод текстового поля достичь?
благодарю вас
--- подробно объяснить вопрос ---
Я использую UIAlertAction, добавляя текстовое поле в AlertAction, как показано ниже:
на интерфейсе я объявляю
NSString *_prefixString;
в viewdidload установите значение инициализации
_prefixString = @"AAAA-";
И я установил UITextFieldDelegate в файле заголовка.
Затем набор alertviewcontroller ниже:
UIAlertController *changeDeviceNameDialog =[UIAlertController
alertControllerWithTitle:NSLocalizedString(@"change_device_name",nil) message:nil preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancelChangeDevNameAc = [UIAlertAction actionWithTitle:NSLocalizedString(@"cancel",nil) style:UIAlertActionStyleDefault handler:nil];
UIAlertAction *enterChangeDevNameAc = [UIAlertAction actionWithTitle:NSLocalizedString(@"enter",nil) style:UIAlertActionStyleDefault handler:^(UIAlertAction *action){
UITextField *newDeviceNameTF = changeDeviceNameDialog.textFields[0];
}];
[changeDeviceNameDialog addAction:cancelChangeDevNameAc];
[changeDeviceNameDialog addAction:enterChangeDevNameAc];
[changeDeviceNameDialog addTextFieldWithConfigurationHandler:^(UITextField *textField){
textField.delegate = self;
textField.placeholder = NSLocalizedString(@"new_device_name", nil);
textField.text = _prefixString;
}];
[self presentViewController:changeDeviceNameDialog animated:YES completion:nil];
// below refer the replay
-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([textField.text isEqualToString:_prefixString] && range.location == _prefixString.length - 1 && range.length == 1) {
return NO;
}
return YES;
}
Я хочу, чтобы эффект был, когда появляется предупреждение, текстовое поле имеет текст по умолчанию AAAA-, и пользователь не может очистить текст AAAA-.
Пользователь просто может ввести другой текст, добавив AAAA-.
Но делегат, как и верхний, я все еще могу удалить текст префикса.