在UITextView上用另一个替换给定的字符串

时间:2011-10-12 06:29:45

标签: iphone nsstring passwords uitextview

在我的应用程序上,我需要这样做:当在TextView上键入一个字符以保存在NSString上,之后用'*'替换。我试过这个:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    NSLog(@"typing...");
    text=@"*";
    passwordText=textView.text;
    NSLog(@"password %@",passwordText);

    NSString* nextText = [textView.text stringByReplacingCharactersInRange:range withString:text];
    textView.text=nextText;
    NSLog(@"next %@",nextText);
    NSLog(@"textview.text %@",textView.text);

    return YES;
}

其中passwordTextNSString,其中我要保存UITextView上键盘引入的文字。

结果如下:http://i54.tinypic.com/2cx9ueo.png(这里我介绍了'我们',我看到了这个:'* w * e'。任何人都可以帮我解决这个问题吗?

我提到我必须使用UITextView,而不是UITextField。

3 个答案:

答案 0 :(得分:2)

我可以告诉你为什么你和*一起得到角色,虽然我不确定你的方法是否值得通过这个。

将您的返回语句设为NO,这将丢弃按下的新键。 YES现在将该字符放在程序化的'*'旁边。

答案 1 :(得分:1)

如果您希望立即更改,只需在方法中返回NO。如果你希望它有点延迟(即首先显示一个字符然后用*替换为密码字段),返回YES并从

运行另一种方法

textView:shouldChangeTextInRange:replacementText:使用计时器在0.5秒后触发的方法(如果您愿意,可以使用其他数字)。

这个新方法可以用*。

替换最后添加的字符或更改的字符

答案 2 :(得分:0)

查看this answer类似的问题。我相信你可以修改它以满足你的需求。