2012-07-31 79 views
1

这就是我想要的应用程序。当在键盘上按下回车键时,显示一些文字

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

所以基本上,你有一个文本视图是一个项目符号列表。就像Word一样,在这里你开始一颗子弹,当你回归时,它会为你制作一个新的子弹,所以你可以开始在那一行上打字。

what I want my app to do

我该怎么办呢?

这是其他任何愚蠢的菜鸟喜欢我工作:

我要把它放到我的.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; 


} 

然后我把它放在我的视角下.DidLoad

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

[myTextView setDelegate:self]; 

} 
+2

究竟什么是你的问题?你有什么尝试? – jtomschroeder 2012-07-31 17:45:09

+0

我试图看看做一个NSNotification,我无法找到一种方法来检查何时按下返回键。然后我看了这个方法,并且因为我是Objective-C的新手,所以放弃了它 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text。我真的只是在寻找一个对这个问题有很好解决方案的人。 – Craig 2012-07-31 17:51:19

+0

你应该在'(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)范围replacementText:(NSString *)text'中处理它,这个代理很容易。无论何时输入返回键,replacementText都将是“\ n”,在这种情况下,您需要手动中止文本,并从此委托方法返回NO。否则,它会再次修改您的文本。 – 2012-07-31 18:39:46

回答

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; 
} 
+0

所以,我把它放到我的.m文件中,并将textView更改为我的文本视图被调用的是myTextView,但它不起作用。还有什么我需要做的吗?这是我的代码: – Craig 2012-07-31 18:45:59

+0

- (BOOL)的TextView:(UITextView的*)的TextView shouldChangeTextInRange:(NSRange)范围replacementText:(的NSString *)文本 { 如果([文字isEqualToString:@ “\ n”]) { 的NSString * modifiedString = [myTextView。文字stringByAppendingString:@“\ n \ u2022”]; [myTextView setText:modifiedString]; return NO; } return YES; } – Craig 2012-07-31 18:46:06

+0

我做了一个NSLog,当我进入这个布尔值时触发,当我运行它从未记录的应用程序。有什么我需要改变BOOL。是textView应该是myTextView或什么? – Craig 2012-07-31 19:05:22

0

方法-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text将被称为每个字母输入删除。 所以在这种方法中,你可以尝试用bullet char替换所有换行符。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
... 
    textView.text = [textView.text stringByReplacingOccurrencesOfString:@"\\n" withString:@"\u2022"]; 
... 
} 
+0

而不是替换“\\ n”,我想我想用“\\ n \ u2022”替换“\\ n”? – Craig 2012-07-31 18:51:16

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 
} 
+0

我必须改变(BOOL)textview:(UITextView *)textview以适合我的textView的名字吗? – Craig 2012-07-31 19:24:45

相关问题