向UITextField添加一个永久字符

时间:2013-10-17 01:41:56

标签: ios uitextfield

有没有办法永久性地将字母添加到用户无法删除的UITextField?我想添加一个字符而用户无法删除它,但他们仍然可以添加字母。

干杯,

P.S。这适用于iOS

3 个答案:

答案 0 :(得分:5)

一个UITextField有一个委托方法调用应该更改范围内的字符,这个方法基本上问,我应该添加还是删除下一个字符?从中你可以决定你想要什么。这是一些示例代码。

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

    BOOL shouldChangeCharacters = ( (textField.text.length + string.length) > 1 ); 
    return shouldChangeCharacters;

}

此代码表示如果添加的新字符加上当前文本大于1,则可以进行更改,如果文本不大于1,则我们不会进行更改...

现在,假设某人可能会尝试粘贴您的角色,仍会调用此委托方法,但您必须做一些事情。

if (range.location == 0) {
    NSString* firstCharacter = [string substringToIndex:1];
    BOOL firstCharacterIsDesiredCharacter = [firstCharacter isEqualToString:@"#"];
    if ( !firstCharacterIsDesiredCharacter ) {
        NSString* symbolWithText = [NSString stringWithFormat:@"#%@",text];

        //  ******************** \\

        [textView setText:symbolWithText];
        return NO;

        // or we could do this

        string = symbolWithText;

        //  ******************** \\

    }

}

两种情况都在修改参数的值......有些人不喜欢这样做。这可能是一个糟糕的编程习惯..或者如果你要修改它们,你应该先做一些过程。

有了这个,我们只需要运行这个代码,如果他们试图替换第一个字符,我替换哈希标记符号,第一个字符来自位置0和长度1的范围。所以如果范围是等于0,然后我们运行我们的代码来修复它。此代码还考虑到它们可能会粘贴特殊符号。所以,如果UITextField读了#work,他们试图复制" work"或" #work"如果哈希标记是第一个字符,则需要考虑这两种情况并完全跳过代码。

UITextField Reference

答案 1 :(得分:0)

试试这个

   UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
   label.text = @"left";
   label.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
   textField.leftViewMode = UITextFieldViewModeAlways;
   textField.leftView = label;

答案 2 :(得分:0)

尝试使用:

你的.h:

中的

IBOutlet UITextFeild *textFeild;
你的.m中的

- (BOOL)textFieldShouldReturn:(UITextField *)textFeild {

NSString *textFeildText = textFeild.text;
textFeild.text = [NSString stringWithFormat:@"string you want to always add %@",textFeildText];

return NO;

}

当用户正在编辑文本框时,这并不总是会显示,但是一旦它们点击返回,它将自动添加到文本框中。如果您使用此代码,我建议您默认情况下在文本字段中没有所需的字符串,否则您可能会得到以下内容:

String you want to add String you want to add Hello World!

如果你只是使用我给你的代码,并且不要将你想要的字符串默认放在字段中,那么你很高兴!如果你想点击返回后键盘自动消失,只需在'return NO'语句上面的textFeildShouldReturn方法中添加它:

[textFeild resignFirstResponder];