2013-07-24 35 views
0

我想保留UITextField中的某些文本不可编辑。例如,我想保留诸如“.com”之类的东西,在此“.com”之前预先输入用户的输入。如何防止编辑UITextField中的部分文本

+0

这可以帮助你: http://stackoverflow.com/questions/9248340/can-i-place-noneditable-text-in-uitextfield – RKY

+0

使用IBAction为文本字段连接到一个方法改变。当它被触发时,根据需要更改文本。 – Sandeep

回答

2

尝试使用这种方法

(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 

而且使用的东西像这样,所以当用户试图编辑最后三个字符时,它将返回NO:

if (string.length < 3) { 
    NSLog(@"NO -> string.length < 3"); 
    return NO; 
} 
if (range.location > textField.text.length-3) { 
    NSLog(@"NO"); 
    return NO; 
} 
return YES; 
+1

这将无法正常工作。如果用户选择“com”部分,然后点击删除,那么将调用“shouldChangeCharacters ...”委托方法,其长度为零。你的第一个'if'检查将会看到这个返回'YES',这意味着所选的“com”将被删除。与所期望的相反。 – rmaddy

+0

我想这是对的,但这只是他想如何工作而已。无论如何,我为它制作了一个版本,现在它可能更少错误...... –

0

记录每个字符的变化。如果编辑了“.com”的任何部分,则以编程方式恢复它。请务必向用户提供“.com”不可编辑的指示。

0

当用户返回的UITextField做到这一点:

NSString *oldString = yourTextField.text; 
NSString *newString = [oldString stringByAppendingString:@".com"]; 
yourTextField.text = newString; 
0

你可以这样做有以下两种方式:

NSString *suffixStr = @".com"; 
1. 
NSString *newStr = [yourStr stringByAppendingString:suffixStr]; 
2. 
NSString *newStr = [NSString stringWithFormat:@"%@%@", yourStr, suffixStr]; 
相关问题