我需要在故事板上创建一个带有符号的文本字段,该符号将显示但不可编辑。
例如,我们有一个电话号码国家代码+44。用户可以编辑44但是" +"无法删除。
提前谢谢。
答案 0 :(得分:7)
我建议将“+”设置为UILabel
中的文本,并将该标签设置为文本字段的leftView
。例如,在Objective-C中:
UILabel *plusLabel = [[UILabel alloc] init];
plusLabel.text = @" +";
[plusLabel sizeToFit];
self.textField.leftView = plusLabel;
self.textField.leftViewMode = UITextFieldViewModeAlways;
在斯威夫特:
let plusLabel = UILabel()
plusLabel.text = " +"
plusLabel.sizeToFit()
textField.leftView = plusLabel
textField.leftViewMode = UITextFieldViewMode.Always
答案 1 :(得分:1)
您可以使用- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
委托上的UITextField
方法来确定是否应允许对文本字段中的字符进行特定更改。使用该方法,您可以通过- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement
。
NSString *finalText = [textField.text stringByReplacingCharactersInRange:range withString:string];
然后您可以将最终文本字符串与空字符串进行比较,如果它们相同,则返回NO
。这假设您的文本字段的文本以“+”开头。
if ([finalString isEqualToString:@""]) {
return NO;
} else {
return YES;
}