未调用UITextView shouldChangeTextInRange委托

时间:2012-02-13 00:02:27

标签: objective-c uitextview

我正在使用此代码设置我在视图中的uitextview参数。

_textview=[[UITextView alloc]init];
[_textview setUserInteractionEnabled:FALSE];
_textview.text=@"Write your message";
_textview.textColor=[UIColor lightGrayColor];
_textview.layer.cornerRadius=6;
_textview.contentInset = UIEdgeInsetsZero;
_textview.delegate=self;

我有.h这段代码

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

我已使用界面将插座连接到uitextview。

以下是:

- (void)textViewDidChange:(UITextView *)inTextView

调用上面的代理但不是以下代理:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementString:(NSString *)string 

为什么会这样?我做错了吗?

任何帮助表示赞赏...

2 个答案:

答案 0 :(得分:10)

除了删除_textview = [[UITextView alloc]init];以便不覆盖你的nib加载的textview。

<UITextViewDelegate>方法是:

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{}

正确的方法签名是:

textView:shouldChangeTextInRange:replacementText:

textView:shouldChangeTextInRange:replacementString:

答案 1 :(得分:6)

因为您输入的方法名称错误。

没有

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementString:(NSString *)string

但仅

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

请注意replacementStringreplacementText之间的差异。

另外,正如其他人所说,如果您在IB中创建了UITextView,则不应在代码中再次初始化它(但这不是您的委托从未调用的原因)。