在學(xué)習(xí)iOS開發(fā)的過(guò)程中總是遇見鍵盤出現(xiàn)時(shí),遮蓋了輸出口UITextField,無(wú)法看到用戶自己輸出的內(nèi)容。這時(shí)就需要對(duì)當(dāng)前視圖做出相應(yīng)的上移,當(dāng)輸出結(jié)束時(shí)點(diǎn)擊屏幕的任意地方夺英,使鍵盤彈回去晌涕。
第一種方法是在UITextField開始編輯前和編輯后調(diào)用的方法里添加移動(dòng)視圖的方法;第二種方法是新創(chuàng)建一個(gè)視圖移動(dòng)的方法痛悯,兩次都調(diào)用余黎,并判斷是否做出相應(yīng)移動(dòng)。
把兩種方法貼出來(lái)载萌,都需要在.h文件中添加UITextFieldDelegate協(xié)議惧财,還需要設(shè)置委托,此處略過(guò)
//***更改frame的值***//
//在UITextField 編輯之前調(diào)用方法
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
//設(shè)置動(dòng)畫的名字
[UIView beginAnimations:@"Animation"context:nil];
//設(shè)置動(dòng)畫的間隔時(shí)間
[UIView setAnimationDuration:0.20];
//??使用當(dāng)前正在運(yùn)行的狀態(tài)開始下一段動(dòng)畫
[UIView setAnimationBeginsFromCurrentState: YES];
//設(shè)置視圖移動(dòng)的位移
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y -100, self.view.frame.size.width, self.view.frame.size.height);
//設(shè)置動(dòng)畫結(jié)束
[UIView commitAnimations];
}
//在UITextField 編輯完成調(diào)用方法
- (void)textFieldDidEndEditing:(UITextField *)textField
{
//設(shè)置動(dòng)畫的名字
[UIView beginAnimations:@"Animation"context:nil];
//設(shè)置動(dòng)畫的間隔時(shí)間
[UIView setAnimationDuration:0.20];
//??使用當(dāng)前正在運(yùn)行的狀態(tài)開始下一段動(dòng)畫
[UIView setAnimationBeginsFromCurrentState: YES];
//設(shè)置視圖移動(dòng)的位移
self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y +100, self.view.frame.size.width, self.view.frame.size.height);
//設(shè)置動(dòng)畫結(jié)束
[UIView commitAnimations];
}
第二種方法:
//在UITextField 編輯之前調(diào)用方法
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[self animateTextField: textField up: YES];
}
//在UITextField 編輯完成調(diào)用方法
- (void)textFieldDidEndEditing:(UITextField *)textField
{
[self animateTextField: textField up: NO];
}
//視圖上移的方法
- (void) animateTextField: (UITextField *) textField up: (BOOL) up
{
//設(shè)置視圖上移的距離扭仁,單位像素
constintmovementDistance =100;// tweak as needed
//三目運(yùn)算垮衷,判定是否需要上移視圖或者不變
intmovement = (up ? -movementDistance : movementDistance);
//設(shè)置動(dòng)畫的名字
[UIView beginAnimations: @"Animation"context: nil];
//設(shè)置動(dòng)畫的開始移動(dòng)位置
[UIView setAnimationBeginsFromCurrentState: YES];
//設(shè)置動(dòng)畫的間隔時(shí)間
[UIView setAnimationDuration:0.20];
//設(shè)置視圖移動(dòng)的位移
self.view.frame = CGRectOffset(self.view.frame,0, movement);
//設(shè)置動(dòng)畫結(jié)束
[UIView commitAnimations];
}
//點(diǎn)擊屏幕,讓鍵盤彈回
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.view endEditing:YES];
}