向UITextField添加一个永久字符

Oli*_*ack 4 uitextfield ios

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

干杯,

ps这适用于iOS

A's*_*ens 5

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

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

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

}
Run Code Online (Sandbox Code Playgroud)

此代码表示如果添加的新字符加上当前文本大于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;

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

    }

}
Run Code Online (Sandbox Code Playgroud)

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

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

UITextField参考