2016-03-22 11 views
1

Ich muss meine UITextView bearbeiten und wenn ich diese Änderungen mache ich brauche sie, um das in meinem UITextFields widerspiegeln. Zur Zeit kann ich den folgenden Code verwenden, um den Text, den ich schreibe, in den ersten zu verschieben. UITextField Gibt es eine einfache Möglichkeit, jede Zeile in eine separate UITextField zu verschieben?Wie ändere ich Text in UITextView und UITextField

Wie das Bild, außer die 1, 2 und 3 gehen zu einem anderen UITextField.

-(IBAction)print:(id)sender { 

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

} 

Like this

Wirklich, ich brauche um dies herauszufinden. Jede Hilfe wird geschätzt.

+0

Ja, wie sollte ich das tun? – vype

Antwort

1

Lassen Sie Ihren View Controller dem Protokoll UITextViewDelegate entsprechen.

Als nächstes setzen Sie die Eigenschaft delegate Ihrer Textansicht auf Ihren View-Controller.

Dann implementieren - (void)textViewDidChange:(UITextView *)textView, entlang dieser Linien:

- (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

Warum verwenden Sie nicht die Methode 'textViewDidChange:' delegate anstelle von 'textView: sentChangeTextInRange:'? Es ist eine viel bessere Wahl in diesem Fall. – rmaddy

+0

Völlig korrekt @ rpaddy. –

+0

Obwohl das immer noch nicht ein Live-Update tun, wenn ich Text in der Textansicht ändern – vype

Verwandte Themen