如何限制textField
字符串的前缀。
我想要textfield具有默认前缀字符串(AAAA - )的效果。
(AAAA-用户添加字符串后)
用户无法删除这些字符串,用户可以添加将字符串附加到textField
。
如何使用下面的委托方法实现效果?
-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
}
我不想自定义模态视图来实现这些效果。
有一些文本字段方法可以实现吗?
谢谢
---详细解释问题---
我使用UIAlertAction在AlertAction中添加文本字段,如下所示:
在界面我宣布
NSString *_prefixString;
在viewdidload中设置initvalue
_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 - 。
但代表就像上层一样,我仍然可以删除前缀文本。
答案 0 :(得分:2)
试试这个,
设置prefixString
,
self.prefixString = @"PREFIX";
然后在delegate
方法中,
-(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;
}
答案 1 :(得分:0)
如果replacementString的长度为-1,并且它是您要阻止删除的字符串的范围,则返回FALSE。
答案 2 :(得分:0)
您可以按照下面的代码设置textField
和setLeftViewMode
来实现您的目标。
UILabel *lblPrifix = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 20, 20)];
lblPrifix.text = @"AAAA-";
[_textField setLeftView:poundLabel];
[_ textField setLeftViewMode:UITextFieldViewModeAlways];
希望这对你有所帮助。