@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仍然是空的。
我错了什么?
答案 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:。