ios如何实现被键盘遮挡时,带有textfield的tableview自动上移
2013-07-16 14:01
656 查看
最正规的办法,用通知
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 { /* Reduce the size of the text view so that it's not obscured by the keyboard. Animate the resize so that it's in sync with the appearance of the keyboard. */ 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]; /* Restore the size of the text view (fill self's view). Animate the resize so that it's in sync with the disappearance of the keyboard. */ 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
相关文章推荐
- 如何实现被键盘遮挡时,带有textfield的tableview自动上移(转自cocoaChina)
- iOS 被键盘遮挡时,带有textfield的tableview自动上移
- iOS开发tableView的cell里面有textField,键盘出现的时候,自动上移
- iOS实现输入框跟随键盘自动上移的实例代码
- IOS开发 当键盘出现的时候,如何让UITextField自动上移
- iOS开发 textField被键盘遮住的时候自动上移
- iOS 处理键盘遮挡TextField、TextView问题
- iOS TextField 弹出键盘时实现view整体上移下移:防止弹出键盘遮挡输入框
- iOS键盘遮挡输入框,输入区域自动上移
- iOS tableview上textView在编辑状态时,tableview自动上移的功能
- iOS 输入框弹出键盘后改变tableView高度内容不被遮挡
- iOS自动布局实现Cell和Tableview高度自适应(SDAutoLayout)
- tableviewcell 自动调整textfiled的键盘遮挡问题 UITableViewController中的tableview做可以自适应键盘高度来改变tableview的额外高度。
- 用TPKeyboardAvoidingScrollView在scrollview中实现自动上滚,避免键盘遮盖住了textfield,textview等控件
- TPKeyboardAvoidingScrollView用于在scrollview中实现自动上滚,避免键盘遮盖住了textfield,textview等控件。
- Swift 解决IOS开发中TableView中编辑UITextField时键盘遮挡输入框的情况
- UITableView键盘遮挡 自动上移
- ios tableView多个cell处理键盘遮挡内容视图的问题
- IOS开发 ,当键盘出现的时候如何让UITextField自动上移
- [ios]TableView的Cell中有Textfield时放置键盘遮挡输入框