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!"];
}

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

目的の効果が得られます (キーボードの Return キーを押すたびに Hey が追加されます) が、何も入力できなくなりました... 何かアイデアはありますか?

4

3 に答える 3

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

コントローラーを UITextViewDelegate プロトコルの実装として宣言し、それをテキスト ビューのデリゲートとして接続する必要があります。そうしないと、デリゲート メッセージをまったく受信しません。

次に、実装する必要があります。

– textView:shouldChangeTextInRange:replacementText:

... YES/TRUE を返す場合、それ以外の場合、テキストは追加されません。

Update02:

戻り値を持つすべての UITextViewDelegate プロトコル メソッドを実装する必要があります。そうしないと、テキスト ビューはデフォルトで NO と見なされます。

参照: Text and Web プログラミング ガイド: TextFields と TextViews の管理

また、デリゲート パターンについても理解する必要があります。

于 2010-08-15T14:07:24.763 に答える
0

デリゲート呼び出しの仕組みは、iOS プログラミングの非常に重要な部分です。Apple ライブラリにドキュメントがあり、多くの優れた書籍でも説明されています。Apress の書籍「Beginning iPhone Programming」は非常に優れており、デリゲート メソッドについて説明しています。

于 2010-09-18T16:07:29.097 に答える