当用户点击返回时,在UITextView中插入日期/时间

时间:2010-08-15 12:00:41

标签: iphone xcode uitextview ipad uitextviewdelegate

我试图在用户点击返回键时插入当前日期/时间,或者开始在Xcode中的UITextView上键入,但不太确定从哪里开始。

我知道这个方法适用于单击TextView但似乎不起作用:

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

由于

更新

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:

我已将此添加到我的.m文件中:

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

我得到了预期的效果(每当我按下键盘上的返回时都会添加嘿)但我现在无法输入任何内容......任何想法?

3 个答案:

答案 0 :(得分:0)

您必须将控制器声明为实现UITextViewDelegate协议,然后将其作为文本视图的委托连接。否则它根本不会收到委托消息。

然后你必须实现:

– textView:shouldChangeTextInRange:replacementText:

...返回YES / TRUE,否则不添加任何文本。

Update02:

您需要实现具有返回的所有UITextViewDelegate协议方法。如果不这样做,默认情况下文本视图假定为NO。

请参阅:Text and Web Programming Guide: Managing TextFields and TextViews

您还需要了解Delegate Pattern

答案 1 :(得分:0)

用以下方法替换您的方法

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

答案 2 :(得分:0)

委托调用的机制是iOS编程的一个非常重要的部分。 Apple库中有一个文档,许多好书也对它进行了讨论。 Apress的书“Beginning iPhone Programming”非常好,涵盖了委托方法。