在我的应用程序中,我需要在UITextField中添加一些文本(比如ABC) 这是不可编辑的。在此文本字段中输入的任何字符后面都应该是可编辑的文本。(如果我输入123则文本应该是ABC123,123部分是可编辑的。)如何做到这一点
答案 0 :(得分:1)
您需要与UITextField
代表
示例代码
每次为UITextFiled设置前缀,如果为空
-(BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
if ([self.txtPhoneNo.text isEqualToString: @""]) {
self.txtPhoneNo.text = @"ABC";
}
}
仅在特定前缀范围之后可编辑
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString * searchStr = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSString *prefixString = @"ABC";
NSRange prefixStringRange = [searchStr rangeOfString:prefixString];
if (prefixStringRange.location == 0) {
// prefix found at the beginning of result string
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS_ONLY] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
return ([string isEqualToString:filtered]);
}
return NO;
}
如果没有文本,则重置TextField,前缀
除外 -(void)textFieldDidEndEditing:(UITextField *)textField{
if ([self.txtPhoneNo.text isEqualToString:@"ABC"]) {
self.txtPhoneNo.text =@"";
}
}
答案 1 :(得分:0)
最初将ABC
放入viewDidLoad或xib中的UITextField
或您想要的位置。
yourTextField.text=@"ABC";
然后你可以使用它。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([textField.text isEqualToString:@"ABC"] && [string isEqualToString:@""]) {
return NO;
}
return YES;
}
答案 2 :(得分:0)
非常简单
- (BOOL) textField : (UITextField *)textField
shouldChangeCharactersInRange : (NSRange)range
replacementString : (NSString *)string
{
if (range.location <= [@"ABC" length]) {
return NO;
}
return YES;
}
USER EDITS TEXTFIELD (either paste/replace or direct editing)
|
|
V
SYSTEM WILL CALL shouldChangeCharacterInRange
|
|
V
if you return true from this, then editing takes place
else, changes will be discarded
范围对象包含location
(文本中的更改开始)和length
(来自location
,将更改多少个字符)。
所以,
location <= 3
,即用户正在编辑@“ABC”,我们应该阻止,请返回NO
YES
如果您想进一步优化,可以用预先计算的长度值替换[@"ABC" length]
。
答案 3 :(得分:0)
最初将ABC放在viewDidLoad或xib中的UITextField中,或者你想要的地方。
[[NSNotificationCenter defaultCenter] addObserver:(id)self selector:@selector(textFieldChangeCharacters:) name:UITextFieldTextDidChangeNotification object:nil];
-(void)textFieldChangeCharacters:(id)sender{
UITextField *textField = [(NSNotification *)sender object];
NSLog(@"Textfield Text = %@",textField.text);
if (textField.text.length < @"ABC".length) {
textField.text = @"ABC";
}
}