1

这就是我希望应用程序执行的操作。

点击“文本视图”而不是“文本字段”,然后显示键盘并弹出一个项目符号(“\u2022”)。你输入你的句子,当你按下回车键时,它会生成一个新的子弹。

所以本质上,你有一个文本视图,它是一个项目符号列表。就像 Word 一样,您开始一个项目符号,当您按下回车键时,它会为您创建一个新项目符号,因此您可以在该行开始输入。

我希望我的应用程序做什么

我该怎么做呢?

这对像我这样的任何其他愚蠢的菜鸟都有效:

我把它放到我的 .m 文件中

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range  replacementText:(NSString *)text
{
if([text isEqualToString:@"\n"])
{
NSString *modifiedString = [myTextView.text stringByAppendingString:@"\n\u2022"];
[myTextView setText:modifiedString];
return NO;
}
return YES;
}

我把它放到我的 .h 文件中

@interface CRHViewController3 : UIViewController <UITextViewDelegate> {

    __weak IBOutlet UITextView *myTextView; 


} 

然后我把它放在我的 viewDidLoad 下

    - (void)viewDidLoad
{
    [super viewDidLoad];

[myTextView setDelegate:self];   

}
4

3 回答 3

2

试试这个。

(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if([text isEqualToString:"\n"])
    {
        NSString *modifiedString = [textView.text stringByAppendingString:@"\n\u2022"];
        [textView setText:modifiedString];
        return NO;
    }
    return YES;
}
于 2012-07-31T18:26:08.483 回答
0

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text将为删除时输入的每个字母调用该方法。因此,在这种方法中,您可以尝试用项目符号字符替换所有换行符。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
...
   textView.text = [textView.text stringByReplacingOccurrencesOfString:@"\\n" withString:@"\u2022"];
...
}
于 2012-07-31T18:10:28.193 回答
0

要使用此代码:

(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if([text isEqualToString:"\n"])
    {
        NSString *modifiedString = [textView.text stringByAppendingString:@"\n\u2022"];
        [textView setText:modifiedString];
        return NO;
    }
    return YES;
}

您的头文件必须如下所示:

@interface MyViewController : UIViewController <UITextViewDelegate> {

   //instance variables in here
}
于 2012-07-31T19:07:03.210 回答