2011-10-12 91 views
2

在我的应用程序中,我需要这样做:在TextView上键入一个字符以保存在NSString上,然后用'*'替换。我尝试这样做:用UITextView上的其他字符替换给定的字符串

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    NSLog(@"typing..."); 
    [email protected]"*"; 
    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; 
} 

其中passwordText是,我要保存文本从键盘上介绍的UITextViewNSString

结果是这样的:http://i54.tinypic.com/2cx9ueo.png(这里我介绍了“我们”,我看到这样的:?“* W * E”谁能帮我解决这个

我提,我必须使用UITextView做到这一点,而不是的UITextField。

回答

2

我可以告诉你为什么你与*相处的性格,虽然我是不知道你的方法是否值得通过这个。

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

0

this answer到类似的问题。我敢肯定,你可以修改它以满足您的需求。

+0

我以前见过这个答案,但它没有帮助我 – Gabrielle

1

如果您希望更改立即生效,只需在方法中返回NO。如果你希望它稍微延迟一点(即先显示一个字符,然后用*代替密码字段中的内容),返回YES并运行另一个方法textView:shouldChangeTextInRange:replacementText:要在0.5之后触发的方法秒(或其他数字,如果你喜欢)使用计时器。

这种新方法可以用*替换上次添加的字符或更改后的字符。

相关问题