我有6个UITextFields
在我的UIScrollView
.现在,我可以按用户请求滚动.但是当键盘出现时,会隐藏一些文本字段.
这不是用户友好的.
如何以编程方式滚动视图,以确保键盘不隐藏文本字段?
这对我有用.在为键盘调整视图之前,有一个实例变量保存UIScrollView的偏移值,这样您就可以在UITextField返回之后恢复之前的状态:
//header @interface TheViewController : UIViewController{ CGPoint svos; } //implementation - (void)textFieldDidBeginEditing:(UITextField *)textField { svos = scrollView.contentOffset; CGPoint pt; CGRect rc = [textField bounds]; rc = [textField convertRect:rc toView:scrollView]; pt = rc.origin; pt.x = 0; pt.y -= 60; [scrollView setContentOffset:pt animated:YES]; } - (BOOL)textFieldShouldReturn:(UITextField *)textField { [scrollView setContentOffset:svos animated:YES]; [textField resignFirstResponder]; return YES; }
最后,一个简单的修复:
UIScrollView* v = (UIScrollView*) self.view ; CGRect rc = [textField bounds]; rc = [textField convertRect:rc toView:v]; rc.origin.x = 0 ; rc.origin.y -= 60 ; rc.size.height = 400; [self.scroll scrollRectToVisible:rc animated:YES];
现在我认为只是将它与上面的链接结合起来并设置好了!
我已经整理了一个通用的,插入式UIScrollView和UITableView子类,它负责将其中的所有文本字段移出键盘.
当键盘即将出现时,子类将找到即将被编辑的子视图,并调整其帧和内容偏移以确保视图可见,并使用与键盘弹出窗口匹配的动画.当键盘消失时,它会恢复其先前的大小.
它应该基本上适用于任何设置,可以是基于UITableView的界面,也可以是手动放置的视图.
在这里.
(For google: TPKeyboardAvoiding, TPKeyboardAvoidingScrollView, TPKeyboardAvoidingCollectionView.) Editor's note: TPKeyboardAvoiding seems to be continually updated and fresh, as of 2014.