2012-04-12 83 views
0
@interface SomeViewController : UIViewController <UITextViewDelegate> 

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

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

我需要textview(可编辑)在我的视图控制器。iphone。使UITextView,但不会使它可见

所以我设置的协议,

而且,1B对于文件的所有者了。 (我不知道,是没有必要?)

我的.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

_textView.delegate = self;写这行。如果你不把你的控制放在.XIB文件中,则不需要IBOutlet。 – priyanka 2012-04-12 13:37:32

回答

0

您需要将委托添加到您的TextView,尝试这样的:

_textView.delegate = self; 

在另一方面,

textViewDidChange 

只会工作,当你改变你的文字,如果你想放在TextView的文本,你可以这样做:

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

在你的viewDidLoad

+0

我将该行添加到了我的viewDidLoad中,不工作... – 2012-04-12 13:45:01

+0

而我在该方法中添加了该行,不工作.... – 2012-04-12 13:45:51

+0

查看我的编辑与更多信息 – 2012-04-12 13:56:23

0

合成textView时,你会像@synthesize textView = _textView那样做,这样就可以使用下划线的名称吗?通常,强调的仅用于setter/getter方法(例如覆盖它们时)。

注意

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

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

+0

所以,我猜财产到textfield是不必要的,我想? – 2012-04-12 13:54:09

+0

谢谢!这也有帮助。 – 2012-04-12 14:04:10

0

您是否期待[textView setText:@“hdgffgsfgsfgds”]依次调用textViewDidChange:?调用setText不会自动调用textViewDidChange :.