2012-02-13 14 views
4

私はこのコードを使用して、自分のビューにあるuitextviewのパラメータを設定しています。UITextView shouldChangeTextInRangeデリゲートが呼び出されていません

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

私はインターフェイスを使用してuitextviewに出口が接続されている.Hこのコード

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

を有します。上記のデリゲートが呼び出される

- (void)textViewDidChange:(UITextView *)inTextView 

が、1つに従わない:

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

ですが、なぜでしょう何が起こる

は、次のでしょうか?何か間違っているのですか?あなたのペン先は、TextViewのロード上書きしないように_textview = [[UITextView alloc]init];を除去することに加えて

感謝すべてのヘルプ...

+0

あなたはIBを使ってテキストフィールドアウトレットを接続しましたか? – NJones

+0

はいNJones TextviewはInterface Builderを使用して接続されています... – stefanosn

答えて

9

<UITextViewDelegate>方法は次のとおりです。

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

正しいメソッドシグネチャは次のとおりです。

textView:shouldChangeTextInRange:replacementText: 

ない:

textView:shouldChangeTextInRange:replacementString: 
+0

私はinitコードを削除しましたが、まだ発砲していません。 textviewdidchangeだけが発砲しています... – stefanosn

+0

答えを更新しました。 – NJones

+0

ああ私の神私はとても愚かです!そんなにNJonesありがとう!これはコンパイラーが私に警告やエラーを与えてくれなかったのでとてもイライラしています!再度、感謝します! – stefanosn

6

あなたはメソッド名が間違って入力しているので。

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

だけ

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

replacementStringreplacementTextの間で異なるに注意はありません。

また、他にも、IBでUITextViewを作成した場合は、コード内で再び初期化しないでください(ただし、これはデリゲートが呼び出されなかった理由ではありません)。

+0

ありがとうございますが、あなたの前に投稿されたので、私はNJonesの答えを受け入れました。 – stefanosn

+1

大丈夫です、投票は十分です;) – xuzhe

関連する問題