2009-03-01 15 views
41

コード内にUITextFieldを簡単に無効にする方法はありますか?UITextFieldを無効にする簡単な方法は?

私のアプリはデフォルトですべてオンになっていますが、セグメントコントロールで変更が検出されたら、ユーザーが選択したセグメントに応じてUITextFieldの一部を無効にします。

無効にする方法や編集不可能にする方法を知りたいだけですか?

おかげ

答えて

96

この試してみてください:あなたは、テキストフィールドは、あなたがより多くのコードを追加する必要が無効になっていることを示すためにしたい場合は

textField.enabled = NO; 
+0

笑、私はこれをすべて試してみたことを確信していたが、それは働いているので、タイプミスまたは何かをしたに違いない...あなたの命の恩人...ありがとう:) –

+6

あなたが*有効にしておくと、getterはtextField.enabledではなくtextField.isEnabledです。 – mk12

+0

プロパティ 'enabled'は、UIControlのプロパティを継承します。 NOの場合は、タッチイベントを無視します。それはアプローチの良い仕事です。 – Allen

27

を:

をUITextBorderStyleRoundedRectを使用している場合、あなただけの灰色することができますテキスト:

textField.enabled = NO; 
textField.textColor = [UIColor lightGrayColor]; 

他のスタイルを使用している場合は、 nはまた、背景を灰色:のviewDidLoadで

:(のみ編集可能であってはならないテキストフィールドのためのデリゲートを設定

textField.enabled = NO; 
textField.backgroundColor = [UIColor lightGrayColor]; 
10

は、これはあまりにもあなたの複数のテキストフィールドとき、すべての最も簡単でしょう。

self.textfield.delegate=self; 

と、このデリゲート関数の挿入:

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{ 
return NO; 
} 

厥それを!

+1

これは、すでに投稿された 'textField.enabled = NO'より簡単ですか?私はこれをしなかった。これは正当な代替ソリューションなので、いくつかの辺の場合に便利かもしれない(例えば、異なるテキストフィールドのロードの代理人であるオブジェクトがある場合、無効にされているものが頻繁に変更されます)。しかし、ほとんどのシナリオでは、受け入れられた答えよりも単純ではありません。 –

+0

あなたはいつもこのようにチェックすることができます: 'code' if(textfield == self.aTextField){//テキストフィールドを無効にするかどうかチェックします。 else { –

+0

これは、複数のテキストフィールドがある場合に最適なソリューションです!ありがとうございますAnkish – FouZ

1

UIViewでカテゴリを作成します。

このカテゴリには次のメソッドが追加されています。

-(void)disable { 
    self.alpha = 0.5; 
    self.userInteractionEnabled = FALSE; 
} 

-(void)enable { 
    self.alpha = 1.0; 
    self.userInteractionEnabled = TRUE; 
} 

は、ちょうどあなたがあなたが望む任意のビューにこれを使用することができ、実際に

yourTextField.disable(); 

呼び出します。

関連する問題