如何实现被键盘遮挡时,带有textfield的tableview自动上移(转自cocoaChina)
2016-10-12 18:16
387 查看
最正规的办法,用通知
step 1:
在进入视图的时候添加监视:(viewDidLoad什么的)
step 2:
在键盘动作的时候移动视图:
step 3:
在退出视图的时候注销通知
viewDidUnload:
dealloc:
这些代码是摘自apple sample code KeyboardAccessory.
些许细节自己修改下就好了,比如那个textView
step 1:
在进入视图的时候添加监视:(viewDidLoad什么的)
复制代码 // Observe keyboard hide and show notifications to resize the text view appropriately. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; |
在键盘动作的时候移动视图:
复制代码 - (void)keyboardWillShow:(NSNotification *)notification { NSDictionary *userInfo = [notification userInfo]; // Get the origin of the keyboard when it's displayed. NSValue* aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey]; // Get the top of the keyboard as the y coordinate of its origin in self's view's coordinate system. The bottom of the text view's frame should align with the top of the keyboard's final position. CGRect keyboardRect = [aValue CGRectValue]; keyboardRect = [self.view convertRect:keyboardRect fromView:nil]; CGFloat keyboardTop = keyboardRect.origin.y; CGRect newTextViewFrame = self.view.bounds; newTextViewFrame.size.height = keyboardTop - self.view.bounds.origin.y; // Get the duration of the animation. NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; NSTimeInterval animationDuration; [animationDurationValue getValue:&animationDuration]; // Animate the resize of the text view's frame in sync with the keyboard's appearance. [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:animationDuration]; textView.frame = newTextViewFrame; [UIView commitAnimations]; } - (void)keyboardWillHide:(NSNotification *)notification { NSDictionary* userInfo = [notification userInfo]; NSValue *animationDurationValue = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey]; NSTimeInterval animationDuration; [animationDurationValue getValue:&animationDuration]; [UIView beginAnimations:nil context:NULL]; [UIView setAnimationDuration:animationDuration]; textView.frame = self.view.bounds; [UIView commitAnimations]; } |
在退出视图的时候注销通知
viewDidUnload:
复制代码 [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil]; [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil]; |
复制代码 [[NSNotificationCenter defaultCenter] removeObserver:self name:nil object:nil]; |
些许细节自己修改下就好了,比如那个textView
相关文章推荐
- ios如何实现被键盘遮挡时,带有textfield的tableview自动上移
- iOS 被键盘遮挡时,带有textfield的tableview自动上移
- UITextField,UITextView实现键盘的自动隐藏以及遮挡时自动上移的功能
- UITableView键盘遮挡 自动上移
- TPKeyboardAvoidingScrollView用于在scrollview中实现自动上滚,避免键盘遮盖住了textfield,textview等控件。
- iOS开发tableView的cell里面有textField,键盘出现的时候,自动上移
- 用TPKeyboardAvoidingScrollView在scrollview中实现自动上滚,避免键盘遮盖住了textfield,textview等控件
- tableviewcell 自动调整textfiled的键盘遮挡问题 UITableViewController中的tableview做可以自适应键盘高度来改变tableview的额外高度。
- Table View Cell中有TextField,实现界面随键盘上升
- IOS开发 当键盘出现的时候,如何让UITextField自动上移
- Android 如何实现带滚动条的TextView,在更新文字时自动滚动到最后一行?
- 如何解决tableview上面有一个小空白的区域,关掉自动布局就可以了
- TableView如何实现多个section的删除
- Swift 解决IOS开发中TableView中编辑UITextField时键盘遮挡输入框的情况
- 用SurfaceView,Timer以及Handler实现的一个带有音乐和文字的电子相册,可以自动播放~
- UITableView cell 包含textField 避免键盘遮挡
- iOS Dev (63) 如何在 TableView 滚动时收起键盘?
- iOS键盘遮挡输入框,输入区域自动上移
- 如何检测ScrollView和TableView是处在开始拖动,上移,下移,减速或者停止等状态
- android webview 输入法软键盘遮挡输入框实现(界面自动上滑并可滑动)