TextFieldの入力を認識して、ボタンが押せるようになる<isEqualToString> | demicadeのブログ

demicadeのブログ

iPhoneアプリ開発素人のメモ的なブログです。

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];

}

※ ここから下の部分は変更してません ※

==================================


間違いがあれば、ご指摘お願いします。


明日は、”アクションシートからアルバムやカメラを選択して、取得した画像をイメージビューに表示する”を書く予定です。