Interface Builderで作成したテキストフィールドに2つのテキストフィールドインスタンス変数が接続されているとします。それらをmyReadOnlyTextField
とmyEditableTextField
と呼ぶことができます。 Interface Builderの各テキストフィールドのdelegate
プロパティをView Controller( "File's Owner")[1]に接続してください。ビューコントローラ@implementation
(.mファイル)では、メソッドtextFieldShouldBeginEditing:
を使用して、編集を許可するテキストフィールドと編集を許可しないテキストフィールドを決定するロジックを入力します。 UITextFieldDelegate
Documentationから
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField {
BOOL editable;
if (textField == myReadOnlyTextField) {
editable = NO;
} else if (textField == myEditableTextField) {
editable = YES;
} else {
// editable = YES/NO/Other Logic
}
return editable;
}
:このような何か
textFieldShouldBeginEditing:
編集が指定したテキストフィールドに を開始しなければならない場合は、デリゲートを要求します。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
パラメータ
textField
- 編集を開始 に約されているテキストフィールド。編集セッションを開始する必要がある場合
戻り値
YES
。 、編集を禁止する場合はNO
です。ユーザは、通常 が編集セッションを開始することになるアクションを実行すると
議論
は、テキストフィールドは、編集が実際に進めるべきかどうかを確認 に最初にこのメソッドを呼び出します。ほとんどの場合、 はこのメソッドから単にYESを返し、編集を続行します。
デリゲートによるこのメソッドの実装はオプションです。 が存在しない場合、このメソッドがYESを返したかのように編集が続けられます。
UITextField
Documentationもお読みください。
[1]あなたにも、プログラムでこれを行うことができます。次に例を示します。
- (void)viewDidLoad {
[super viewDidLoad];
// .....
myReadOnlyTextField.delegate = self;
myEditableTextField.delegate = self;
}
すべての '編集不可能な'テキストフィールドに共通のタグ値を割り当て、 'textFieldDidBeginEditing'メソッドでチェックしてBOOLを適切に返すのは簡単です。 – Gokul