搜尋此網誌

2010年4月8日 星期四

iphone開發-dismiss the keyboard

今天花了蠻多時間在解決這個問題 在iphone中輸入文字or數字 他會自動彈出虛擬鍵盤 但是輸入完成後 按下return or done(要看你在UI中 設定成什麼) 並不會自動消失 因此需要自行加入某樣東西才行 以下用我今天寫的東西來介紹
(MyViewController.h)
//UIVewController 使用UITextFieldDelegate這個protocol 這樣才能用到使鍵盤消失的method
@interface MyViewController : UIViewController <UITextFieldDelegate> {
//產生一個可以在上面輸入文字的object
UITextField *textField;
UITextField *textField2;
//產生一個label object
UILabel *label;
NSString *string;
NSString *string2;

}
//用IBOulet作為UI的識別
@property (nonatomic,retain)IBOutlet UITextField *textField;
@property (nonatomic,retain)IBOutlet UITextField *textField2;
@property (nonatomic,retain)IBOutlet UILabel *label;
@property (nonatomic,copy)NSString *string;
@property (nonatomic,copy)NSString *string2;
//按鈕宣告
-(IBAction)calculate:(id)sender;
@end

(MyViewController.m)
#import "MyViewController.h"


@implementation MyViewController

@synthesize textField;
@synthesize textField2;
@synthesize label;
@synthesize string;
@synthesize string2;

//按鈕按下要執行的事件
-(IBAction)calculate:(id)sender
{
//將user輸入的文字 放到string中
self.string=textField.text;
self.string2=textField2.text;
float bmi;
float hight;
//string 轉換成 float (ps:這邊我會另外再簡介)
float stringFloat = [string floatValue];
hight=stringFloat/100;
float stringFloat2 = [string2 floatValue];
float hight2=hight*hight;
bmi=stringFloat2/hight2;

if (bmi<18.5) text="@">=18.5&&bmi<24) text="@">=24&&bmi<27) text="@">=27)
{
label.text=@"太胖了..沒救了";
}
}
//這邊就是當user按下虛擬鍵盤的return or done之後 會呼叫此function 接著鍵盤會自動消失
-(Bool)textFieldShouldReturn:(UITextField *)TextField
{
//因為我有兩個textField (也就是可以讓使用者輸入文字的地方)
[textField resignFirstResponder];
[textField2 resignFirstResponder];
return YES;
}

之後就是記得在UI設計那邊 要將兩個textField 連到file's owner 讓file's owner當作代理程式

1 則留言: