我正在尝试创建一个视图,用户输入他的信息(姓名,电子邮件,生物...)。
要做到这一点,我正在使用一个包含5个部分(0..4)的组表视图,每个部分都有一个内部有UITextField
的单元格(第4节中的单元格除了{{1在里面)。
当用户点击其中一个textFields / textView时,键盘出现,并且单元格(带有选定的textField / textView)滚动到键盘正上方的位置。
我的问题在于第4节的textView,当键盘出现时,它会以某种方式自动滚动单元格以显示,但不完全在正确的位置(文本视图的一半隐藏在键盘后面)。
当我尝试自己进行滚动时(键盘完成动画制作后),我得到了一个丑陋的textView反弹。
它接触到丑陋反弹的原因是当键盘出现+我的滚动时textView自动滚动。此行为(自动滚动)仅针对textView发生,例如,如果我在第4节中使用textField而不是textView,则它不会自动滚动。
所以问题是:如何平滑地将textView滚动到正确的位置?
这是我的代码:
UITextView
答案 0 :(得分:0)
我会尝试这样的事情:
·H
@interface YourViewController : UIViewController <UITextViewDelegate>
的.m
//Set delegate to your textView
textView.delegate = self
#pragma mark - TextView Delegate
//TextView Became First Responder
- (void)textViewDidBeginEditing:(UITextView *)textView{
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:0 inSection:4];
// Other way to get the IndexPath
//NSIndexPath *indexPath = [self.tableView indexPathForCell:(UITableViewCell *)[[textView superview] superview]];
CGRect frame = [self.tableView rectForRowAtIndexPath:indexPath];
//It only works for Portrait iPhone
CGFloat keyboardHeight = 216.0f;
CGPoint offset = CGPointMake(0, self.view.frame.size.height - keyboardHeight - frame.size.height - frame.origin.y);
[self.tableView setContentOffset:offset animated:YES];
}
我没有对它进行测试,但这是我试图解决这个问题的方法。您可以在此处找到有关如何计算键盘大小的更多信息:(http://www.idev101.com/code/User_Interface/keyboard.html)