使用键盘ios向上/向下移动视图

我正在开发类似于WhatsApp等的聊天应用程序。它在视图控制器中有一个tableview,在底部的工具栏中有一个文本字段和button。 我向上滑动视图时遇到了各种问题,使用这个链接,我设法向上滑动视图。 不过,我想解雇键盘和视图下来,适合屏幕。我尝试使用轻按手势,然后单击返回button,但似乎没有任何工作。 我该如何做视图滑下来,键盘消失?

此外,我怎么能改变文本字段的宽度,以便当用户正在写邮件时可以出现多行?

你可以将点击手势事件添加到tableview单元格中,也可以在用户点击tableview时使用触摸事件方法,然后根据键盘以前的状态显示或隐藏键盘。 希望这将有助于你。

使用textFieldShouldReturn退出第一响应者状态(closures键盘)并向上滑动视图。

我个人是这样做的:

  1. 我会注册通知,以便知道键盘什么时候显示,什么时候会隐藏。

  2. 出现键盘时,我设置视图插图以包含键盘的大小。

  3. 向上滑动视图

  4. 当键盘消失时,我将insets设置为零。

TextField委托方法在点击返回button时隐藏键盘

-(BOOL)textFieldShouldReturn:(UITextField*)textField; { [textField resignFirstResponder]; return NO; // We do not want the UITextField to insert line-breaks. } 

注册键盘出现/消失通知

 - (void)viewDidLoad { ... // Register for notifications for when the keyboard will appear and disappear [self registerForKeyboardNotifications]; } // Call this method somewhere in your view controller setup code. - (void)registerForKeyboardNotifications { [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWasShown:) name:UIKeyboardDidShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillBeHidden:) name:UIKeyboardWillHideNotification object:nil]; } // Called when the UIKeyboardDidShowNotification is sent. // Original code for this part here: http://stackoverflow.com/a/16044603/4518324 - (void)keyboardWasShown:(NSNotification *)note { NSDictionary *userInfo = note.userInfo; NSTimeInterval duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; UIViewAnimationCurve curve = [userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]; CGRect keyboardFrameEnd = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; keyboardFrameEnd = [self.view convertRect:keyboardFrameEnd fromView:nil]; [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionBeginFromCurrentState | curve animations:^{ self.view.frame = CGRectMake(0, 0, keyboardFrameEnd.size.width, keyboardFrameEnd.origin.y); } completion:nil]; } - (void)keyboardWillBeHidden:(NSNotification *)note { NSDictionary *userInfo = note.userInfo; NSTimeInterval duration = [userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; UIViewAnimationCurve curve = [userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]; CGRect keyboardFrameEnd = [userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; keyboardFrameEnd = [self.view convertRect:keyboardFrameEnd fromView:nil]; [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionBeginFromCurrentState | curve animations:^{ self.view.frame = CGRectMake(0, 0, keyboardFrameEnd.size.width, keyboardFrameEnd.origin.y); } completion:nil]; } 

我已经创build了示例代码,包括在显示或解除键盘时调整视图的大小。

https://github.com/gingofthesouth/KeyboardHideShow

我说得对 当键盘被解散时,我有另一种方法,根据View.frame-keyboard.frame.height的要求适配视图框架。 不pipe怎么说,多谢拉!:)