web-dev-qa-db-ja.com

UITextFieldを無効にする簡単な方法は?

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

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

無効にする方法、または編集不可にする方法を知っている必要がありますか?

ありがとう

43
CC.

Objective-Cの場合:

textField.enabled = NO;

Swiftの場合:

textField.isEnabled = false

参照: IControl.isEnabled

105
Joel Levin

テキストフィールドが無効になっていることも示す場合は、さらにコードを追加する必要があります。

uITextBorderStyleRoundedRectを使用している場合、テキストのみをグレーアウトできます。

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

他のスタイルを使用している場合、背景をグレーアウトすることもできます。

textField.enabled = NO;
textField.backgroundColor = [UIColor lightGrayColor];
29
Mariana B.

複数のテキストフィールドもある場合、これは最も簡単です:

viewDidLoad :(デリゲートは編集不可のテキストフィールドにのみ設定します。

self.textfield.delegate=self;

そして、このデリゲート関数を挿入します:

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

それでおしまい!

11
Ankish Jain

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

そのカテゴリに次のメソッドを追加します。

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

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

それからただ電話する

yourTextField.disable();

実際には、これを任意のビューで使用できます。

1
Bhavesh