3 Stimmen

Datum/Uhrzeit in UITextView einfügen, wenn der Benutzer Return drückt

Im versucht, das aktuelle Datum / Uhrzeit einfügen, wenn die Benutzer die Return-Taste drückt oder beginnt die Eingabe auf einem UITextView in Xcode aber nicht ganz sicher, wo zu beginnen.

Ich weiß, diese Methode ist für, wenn Sie in die TextView klicken, aber scheint nicht zu funktionieren:

- (void)textViewDidBeginEditing:(UITextView *)textView {
    self.txtDetail.text = [self.txtDetail.text stringByAppendingString:@"Hello!"];
}

Merci

Aktualisierung:

DetailViewController.h 
@interface DetailViewController : UIViewController <UIPopoverControllerDelegate, UISplitViewControllerDelegate> { 
    UITextView *txtDetail;
 } 
@property (nonatomic, retain) IBOutlet UITextView *txtDetail;

 - (void)textViewDidBeginEditing:(UITextView *)textView;

DetailViewController.m 
@synthesize txtDetail;

 - (void)textViewDidBeginEditing:(UITextView *)textView { 
    NSLog(@"Hello");
    self.txtDetail.text = [self.txtDetail.text stringByAppendingString:@"Hello!"];
}

Update02:

Ich habe dies zu meinen .m-Dateien hinzugefügt:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {  

    BOOL shouldChangeText = YES;  

    if ([text isEqualToString:@"\n"]) {  
        // Find the next entry field  

        txtDetail.text = [txtDetail.text stringByAppendingString:@"\nhey\n"];       }  
        textView.editable = YES;

        shouldChangeText = NO; 
    [textView becomeFirstResponder];

    return shouldChangeText;  
}

Ich erhalte den gewünschten Effekt (Hey wird hinzugefügt, wenn ich die Eingabetaste auf der Tastatur drücke), aber ich kann jetzt nichts mehr eingeben... irgendwelche Ideen?

0voto

TechZen Punkte 64117

Sie müssen Ihren Controller als Implementierung des UITextViewDelegate-Protokolls deklarieren und ihn dann als Delegaten der Textansicht verbinden. Andernfalls empfängt er die Delegate-Nachrichten überhaupt nicht.

Dann muss man sie umsetzen:

– textView:shouldChangeTextInRange:replacementText:

... um YES/TRUE zurückzugeben, sonst wird kein Text hinzugefügt.

Update02:

Sie müssen alle UITextViewDelegate-Protokollmethoden implementieren, die einen Rückgabewert haben. Wenn Sie dies nicht tun, nimmt die Textansicht standardmäßig ein NEIN an.

Siehe: Leitfaden zur Text- und Webprogrammierung: Verwalten von TextFields und TextViews

Sie müssen auch die Delegierten-Muster .

0voto

RVN Punkte 4117

Ersetzen Sie Ihre Methode durch die folgende Methode

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{   

   BOOL shouldChangeText = YES;   

   if ([text isEqualToString:@"\n"] && textView == detailText) 
   {   
     // Find the next entry field   

       txtDetail.text = [txtDetail.text stringByAppendingString:@"\nhey\n"];          
       textView.editable = YES; 

       shouldChangeText = NO;  
       [textView becomeFirstResponder]; 
   } 
   return shouldChangeText;   
}

0voto

fogelbaby Punkte 311

Die Mechanik von Delegatenaufrufen ist ein sehr wichtiger Teil der iOS-Programmierung. Es gibt eine Dokumentation dazu in den Apple-Bibliotheken, und sie wird auch in vielen guten Büchern behandelt. Das Apress-Buch "Beginning iPhone Programming" ist sehr gut und behandelt Delegate-Methoden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X