iOS textField键盘弹出/收起 自动上下移

在做聊天或某些特定界面的时候,需要触发textField的键盘。而部分界面会被遮挡住。本文提供了一个很好的解决方法。

- (void)viewDidLoad {

[super viewDidLoad];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(didClickKeyboard:) name:UIKeyboardWillShowNotification object:nil];

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(didKboardDisappear:) name:UIKeyboardWillHideNotification object:nil];

}
#pragma mark -      键盘即将跳出

-(void)didClickKeyboard:(NSNotification *)sender{

CGFloat durition = [sender.userInfo[@"UIKeyboardAnimationDurationUserInfoKey"] doubleValue];

CGRect keyboardRect = [sender.userInfo[@"UIKeyboardFrameEndUserInfoKey"] CGRectValue];

CGFloat keyboardHeight = keyboardRect.size.height;

[UIView animateWithDuration:durition animations:^{

self.view.transform = CGAffineTransformMakeTranslation(0, -keyboardHeight);

}];

}
#pragma mark -      当键盘即将消失

-(void)didKboardDisappear:(NSNotification *)sender{

CGFloat duration = [sender.userInfo[@"UIKeyboardAnimationDurationUserInfoKey"] doubleValue];

[UIView animateWithDuration:duration animations:^{

self.view.transform = CGAffineTransformIdentity;

}];

}

其中打印一下观察者的userInfo 属性可以获取到:

UIKeyboardAnimationCurveUserInfoKey = 7;

UIKeyboardAnimationDurationUserInfoKey = "0.25";

UIKeyboardBoundsUserInfoKey = "NSRect: {{0, 0}, {320, 253}}";

UIKeyboardCenterBeginUserInfoKey = "NSPoint: {160, 353.5}";

UIKeyboardCenterEndUserInfoKey = "NSPoint: {160, 606.5}";

UIKeyboardFrameBeginUserInfoKey = "NSRect: {{0, 227}, {320, 253}}";

UIKeyboardFrameEndUserInfoKey = "NSRect: {{0, 480}, {320, 253}}";

UIKeyboardIsLocalUserInfoKey = 1;

添加上键盘消失的代码,测试一下。希望对大家有用。

你可能感兴趣的:(iOS textField键盘弹出/收起 自动上下移)