一、前期工作 定义全局变量的文本框 和 分别宏定义屏幕的宽和高
#define SCREEN_HEIGHT CGRectGetHeight([UIScreen mainScreen].bounds) #define SCREEN_WIDTH CGRectGetWidth([UIScreen mainScreen].bounds) @interface ViewController ()<UITextFieldDelegate> { UITextField *myTextFileld; }
myTextFileld = [[UITextField alloc]initWithFrame:CGRectMake(0, SCREEN_HEIGHT-40, SCREEN_WIDTH,40 )]; myTextFileld.placeholder = @"请输入内容"; myTextFileld.delegate = self; myTextFileld.borderStyle = UITextBorderStyleRoundedRect; [self.view addSubview:myTextFileld];
二 、 分别给键盘的两个状态增加通知观察者
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(KeyBordAction:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(KeyBordAction:) name:UIKeyboardWillHideNotification object:nil];
调用的方法
- (void)KeyBordAction:(NSNotification *)not{ NSDictionary *info = not.userInfo; CGRect frame = [info[UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGFloat y = CGRectGetMinY(frame); myTextFileld.frame = CGRectMake(0, y-40, SCREEN_WIDTH, 40); }
文本框的代理方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField{ [textField resignFirstResponder]; return YES; }