2016-03-22 27 views
1

我需要編輯我的UITextView,當我做出這些更改時,我需要它們反映在我的UITextFields中。目前我可以使用下面的代碼將我寫入的任何文本移動到第一個UITextField有沒有簡單的方法將每行移動到單獨的UITextField如何更改UITextView和UITextField中的文本

像圖像一樣,除了1,2和3將不同UITextField

-(IBAction)print:(id)sender { 

NSString *texto = [[NSString alloc] initWithFormat:@"%@ %@",[myTextField text],[myTextView text]]; 
[myTextField setText:texto]; 
[myTextView setText:@""]; 
[myTextView resignFirstResponder]; 

} 

Like this

真的,我必須想出解決辦法。任何幫助將不勝感激。

+0

是的,我會怎麼做呢? – vype

回答

1

讓您的視圖控制器符合UITextViewDelegate協議。

接下來,將文本視圖的delegate屬性設置爲您的視圖控制器。

然後,實施- (void)textViewDidChange:(UITextView *)textView,沿着這些線路:

- (void)textViewDidChange:(UITextView *)textView 
{ 
    // Set the text for your text fields. 
    // 
    // (I'm assuming your code for determining the text to put in the 
    // text fields works as you intend, so I'm just copying it here.) 

    NSLayoutManager *layoutManager = [textView layoutManager]; 
    unsigned numberOfLines, index, numberOfGlyphs = [layoutManager numberOfGlyphs]; 
    NSRange lineRange; 

    for (numberOfLines = 0, index = 0; index < numberOfGlyphs; numberOfLines++) 
    { 
     (void) [layoutManager lineFragmentRectForGlyphAtIndex:index 
               effectiveRange:&lineRange]; 

     index = NSMaxRange(lineRange); 
     NSString *lineText = [textView.text substringWithRange:lineRange]; 
     [yourArray addObject:lineText]; 
    } 

    textField1.text=yourArray[0]; 
    textField2.text=yourArray[1]; 
    textField3.text=yourArray[2]; 
    textField4.text=yourArray[3]; 
    textField5.text=yourArray[4]; 
    textField6.text=yourArray[5]; 
    textField7.text=yourArray[6]; 
} 
+1

爲什麼不使用'textViewDidChange:'委託方法而不是'textView:shouldChangeTextInRange:'?在這種情況下,這是一個更好的選擇。 – rmaddy

+0

完全正確@rmaddy。 –

+0

雖然這仍然沒有做實時更新當我更改文本中的文本 – vype

相關問題