3

每当用户点击返回键或开始在 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!"];
}

更新02:

我已将此添加到我的 .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;  
}

我得到了想要的效果(嘿,每当我在键盘上按回车键时都会添加)但我现在什么都不能输入......有什么想法吗?

4

3 回答 3

0

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

于 2010-09-18T16:07:29.097 回答
0

Replace your method with the below method

- (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;   
} 
于 2010-08-26T11:52:18.933 回答
0

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

然后你必须实现:

– textView:shouldChangeTextInRange:replacementText:

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

更新02:

您需要实现所有有返回的 UITextViewDelegate 协议方法。如果您不这样做,则文本视图默认假定为“否”。

请参阅:文本和 Web 编程指南:管理 TextFields 和 TextViews

您还需要了解委托模式

于 2010-08-15T14:07:24.763 回答