【发布时间】:2014-12-27 20:42:18
【问题描述】:
我需要在情节提要上创建一个带有会出现但不可编辑的符号的文本字段。
例如,我们有一个电话号码国家代码 +44。用户可以编辑44,但“+”不能删除。
提前谢谢你。
【问题讨论】:
标签: ios objective-c uitextfield textfield
我需要在情节提要上创建一个带有会出现但不可编辑的符号的文本字段。
例如,我们有一个电话号码国家代码 +44。用户可以编辑44,但“+”不能删除。
提前谢谢你。
【问题讨论】:
标签: ios objective-c uitextfield textfield
我建议将“+”设置为 UILabel 中的文本,并将该标签设置为文本字段的 leftView。例如,在 Objective-C 中:
UILabel *plusLabel = [[UILabel alloc] init];
plusLabel.text = @" +";
[plusLabel sizeToFit];
self.textField.leftView = plusLabel;
self.textField.leftViewMode = UITextFieldViewModeAlways;
在 Swift 中:
let plusLabel = UILabel()
plusLabel.text = " +"
plusLabel.sizeToFit()
textField.leftView = plusLabel
textField.leftViewMode = UITextFieldViewMode.Always
【讨论】:
textViewDidChangeSelection 中。
[text hasPrefix:@"+"]。但是在只需要包含特定字符的情况下(尽管不限于作为第一个字符)[text rangeOfString:@"+"].location != NSNotFound 可能会更好。
您可以在UITextField 的委托上使用- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 方法来确定是否应允许对文本字段中的字符进行特定更改。使用该方法,您可以通过- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement 组成建议的最终字符串。
NSString *finalText = [textField.text stringByReplacingCharactersInRange:range withString:string];
然后您可以将最终文本字符串与空字符串进行比较,如果它们相同,则返回NO。这假设您的文本字段的文本以其中的“+”开头。
if ([finalString isEqualToString:@""]) {
return NO;
} else {
return YES;
}
【讨论】: