0
@interface SomeViewController : UIViewController <UITextViewDelegate>

@property (retain, nonatomic) IBOutlet UIImageView *imageView;
@property (nonatomic, retain) UIImage *image;

@property (nonatomic, retain) IBOutlet UITextView *textView;

ビューコントローラーに textview(editable) が必要です。

だから私はプロトコルを設定し、

また、ファイルの所有者にも IB を送信します。(わかりません、不要ですか?)

そして私の.mファイル....viewDidLoad..

_textView = [[UITextView alloc]init];
[_textView setFrame:CGRectMake(8, 110, 304, 82)];
[_textView setFont:[UIFont boldSystemFontOfSize:12]];
_textView.editable = YES;
//[textView setText:@"hdgffgsfgsfgds"];// if uncommented, this actually visible...

[self.view insertSubview:_textView atIndex:2];

これまでのところ、それは機能しています。しかし、これらのメソッドを実行したい...

- (void)textViewDidChange:(UITextView *)textView
{


    if([_textView.text length] == 0)
    {
        _textView.text = @"Foobar placeholder";
        _textView.textColor = [UIColor lightGrayColor];
        _textView.tag = 0;
    }
}

しかし、ビルド後、私のテキストビューはまだ空です。

私は何を間違えたのですか?

4

3 に答える 3

0

textView を合成するとき@synthesize textView = _textView、下線付きの名前を使えるようにするのは好きですか? 通常、下線付きのものはセッター/ゲッター メソッドでのみ使用されます (たとえば、それらをオーバーライドする場合)。

ご了承ください

テキスト ビューは、ユーザーが開始したテキストの変更に応答して、このメソッドを呼び出します。このメソッドは、プログラムによって開始された変更に応じて呼び出されることはありません。

これは、使用している方法に関する Apple のドキュメントからのものです。これは、コードを使用してテキストを変更している場合、メソッドが起動されないことを意味します。

于 2012-04-12T13:50:27.853 に答える
0

[textView setText:@"hdgffgsfgsfgds"] が textViewDidChange: を呼び出すことを期待していますか? setText を呼び出しても、textViewDidChange: は自動的に呼び出されません。

于 2012-04-12T13:53:21.127 に答える