2012-07-31 29 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

相關問題