苹果手机。制作UITextView但不会使其可见

时间:2012-04-12 13:33:48

标签: iphone delegates uitextview

@interface SomeViewController : UIViewController <UITextViewDelegate>

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

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

我的视图控制器中需要textview(可编辑)。

所以我设置了协议,

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

但是在构建之后,我的textview仍然是空的。

我错了什么?

3 个答案:

答案 0 :(得分:0)

您需要将代理添加到textview,请尝试使用:

_textView.delegate = self;

另一方面,

textViewDidChange

只有在您更改文本时才有效,如果您想在文本视图中放置文本,则可以执行以下操作:

 _textView.text = @"Foobar placeholder";
        _textView.textColor = [UIColor lightGrayColor];
        _textView.tag = 0;

ViewdidLoad

答案 1 :(得分:0)

在合成textView时,你是否像@synthesize textView = _textView这样做,以便你可以使用下划线的名字?通常,强调的方法仅在setter / getter方法中使用(例如,当覆盖它们时)。

请注意

  

文本视图调用此方法以响应用户启动的文本更改。不响应以编程方式启动的更改而调用此方法。

这是Apple正在使用的方法的文档。这意味着如果您通过代码更改文本,则不会触发该方法。

答案 2 :(得分:0)

您是否期望[textView setText:@&#34; hdgffgsfgsfgds&#34;]依次调用textViewDidChange:?调用setText不会自动调用textViewDidChange:。