繁体   English   中英

向UITextField添加永久字符

[英]Add a permanent Character to UITextField

有没有一种方法可以将字母永久添加到用户无法删除的UITextField中? 我想添加一个字符,用户无法删除它,但是他们仍然可以在其后添加字母。

干杯,

ps这是针对iOS

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参考

尝试这个

   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;

尝试使用此:

在您的.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];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM