Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 当用户点击return时,在UITextView中插入日期/时间_Iphone_Xcode_Uitextview_Ipad_Uitextviewdelegate - Fatal编程技术网

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

Iphone 当用户点击return时,在UITextView中插入日期/时间,iphone,xcode,uitextview,ipad,uitextviewdelegate,Iphone,Xcode,Uitextview,Ipad,Uitextviewdelegate,每当用户点击返回键或开始在Xcode中的UITextView上键入内容时,我都会尝试插入当前日期/时间,但不太确定从何处开始 我知道此方法适用于单击文本视图,但似乎不起作用: - (void)textViewDidBeginEditing:(UITextView *)textView { self.txtDetail.text = [self.txtDetail.text stringByAppendingString:@"Hello!"]; } 谢谢 更新: 我得到了想要的效果(每当

每当用户点击返回键或开始在Xcode中的UITextView上键入内容时,我都会尝试插入当前日期/时间,但不太确定从何处开始

我知道此方法适用于单击文本视图,但似乎不起作用:

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

更新:
我得到了想要的效果(每当我按下键盘上的回车键时,就会添加Hey),但现在我无法键入任何内容。。。有什么想法吗?

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

然后,您必须实施:

– textView:shouldChangeTextInRange:replacementText:
。。。返回YES/TRUE,否则不添加文本

更新02: 您需要实现所有具有返回的UITextViewDelegate协议方法。如果没有,默认情况下,文本视图将假定为“否”

见:


您还需要了解。

用下面的方法替换您的方法

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

委托调用机制是iOS编程中非常重要的一部分。苹果图书馆里有一个关于它的文档,许多好书中也讨论过它。《开始iPhone编程》一书非常好,介绍了委托方法。

您是否将任何类设置为UITextView的delgate?您是否确保它实现了UITextViewDelegate协议?可能不会在下面发布我的代码…DetailViewController.h@interface DetailViewController:UIViewController{UITextView*TXTDail;}@property(非原子,保留)IBOutlet UITextView*TXTDail;-(void)textViewDidBeginEditing:(UITextView*)textView;DetailViewController.m@synthesis txtdail;-(void)textViewDidBeginEditing:(UITextView*)textView{NSLog(@“Hello”);self.txtDetail.text=[self.txtDetail.text stringByAppendingString:@“Hello!”];}谢谢,不太确定如何实现它。。。我假设在UIPopoverControllerDelegate、UISplitViewControllerDelegate的位置添加了UITextViewDelegate,但如何将其连接到该方法。感谢您的帮助:)如果您正在使用nib,请在文本视图的委托属性和控制器之间建立连接,控制器将是nib的文件所有者。您必须声明UITextViewDelegate并保存标题,然后它才会显示在Interface Builder中。如果以编程方式设置视图,只需使用
self.textView.delegate=self这太令人困惑了!我在xib上设置了一个代理链接它。但是我真的不明白我现在应该做什么。。。该方法似乎仍然没有链接到任何东西,是否有此功能的真正基本示例?这些方法没有链接到任何东西。而是将textView的委托出口链接到实现委托协议的对象。在本例中,它是您的控制器。您必须在委托对象中实现协议的方法。然后,当textView需要查询其委托时,它会将相应的消息(即方法的选择器)发送给控制器,然后控制器调用该方法?似乎找不到此类操作的任何示例代码,这很奇怪,因为它应该是一段简单的通用代码。
– textView:shouldChangeTextInRange:replacementText:
- (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;   
}