TextFieldの入力を認識して、ボタンが押せるようになったり、
押せないようになったりする部分を作ってみました。
起動した段階では、Buttonに”押せません”と表示され、タッチすることができません。
TextFieldに文字を入力すると、Buttonは”押せます”に変わり、タッチすることができます。
とりあえず動きますが、これで正解かはわかりません(笑)
xibファイルにTextFieldとbuttonを作成してください。
TextFieldのOutletsのdelegateは、File's Ownerと接続してください。
TextFieldのReferencing Outletsは、tfと接続してください。
ButtonのSent Eventsは、Touch Up Insideにbtnを接続してください。
ButtonのReferencing Outletsは、oubtnと接続してください。
ViewController.h
==================================
@interface ViewController : UIViewController
{
UITextField *tf;
UIButton *oubtn;
}
@property(nonatomic,retain) IBOutlet UITextField *tf;
@property(nonatomic,retain) IBOutlet UIButton *oubtn;
-(IBAction)btn:(id)sender;
@end
==================================
ViewController.m
==================================
@implementation ViewController
@synthesize tf;
@synthesize oubtn;
//テキストフィールドを編集する直前に呼び出されます
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
NSLog(@"textFieldShouldBeginEditing");
return YES; //これをNOにすると、キーボードが出ません
}
//テキストフィールドを編集する直後に呼び出されます
- (void)textFieldDidBeginEditing:(UITextField *)textField{
NSLog(@"textFieldDidBeginEditing");
}
//Returnボタンがタップされた時に呼び出されます
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
NSString *retStr;
retStr=tf.text; //テキストを受け取って
NSLog(@"%@",retStr); //コンソールに表示
//「resignFirstResponder」はユーザーのアクションに対して
//最初に応答するオブジェクトを放棄するという命令なので
//「tf」が放棄されて、キーボードも消えます
[tf resignFirstResponder];
return YES;
}
//テキストフィールドの編集が終了する直前に呼び出されます
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{
NSLog(@"textFieldShouldEndEditing");
return YES; //これをNOにすると、キーボードが消えません
}
//テキストフィールドの編集が終了する直後に呼び出されます
- (void)textFieldDidEndEditing:(UITextField *)textField{
NSLog(@"textFieldDidEndEditing");
if ([tf.text isEqualToString:@""]) {
//oubtnはIBOutlet!! IBOutletはプログラム→部品に伝達。IBActionは逆
[oubtn setTitle:@"押せません" forState:UIControlStateDisabled];
oubtn.enabled = NO; //ボタンを利用不可にする
}
else{
//oubtnはIBOutlet!! IBOutletはプログラム→部品に伝達。IBActionは逆
[oubtn setTitle:@"押せます" forState:UIControlStateNormal];
oubtn.enabled = YES; //ボタンを利用可にする
}
}
-(IBAction)btn:(id)sender{
NSLog(@"ボタン押しました");
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIButton *btn = [[UIButton alloc] init];
//oubtnはIBOutlet!! IBOutletはプログラム→部品に伝達。IBActionは逆
[oubtn setTitle:@"押せません" forState:UIControlStateDisabled];
oubtn.enabled = NO; //ボタンを利用不可にする
[btn release];
}
※ ここから下の部分は変更してません ※
==================================
間違いがあれば、ご指摘お願いします。
明日は、”アクションシートからアルバムやカメラを選択して、取得した画像をイメージビューに表示する”を書く予定です。