为什么我的uitableview scrolltorowatindexpath在键盘避免期间滚动出视图?

时间:2014-01-08 18:30:03

标签: uitableview keyboard autolayout autorotate

我在通用应用中使用UITableView。它有一个带有UITextFields的自定义单元格,自定义单元格的高度为110.循环是因为我正在使用插座集合 - 应该只有一个实例在iPad中,一个在iPhone中。 iPhone不会旋转。我正在使用笔尖而不是故事板。我正在使用autorotate和autolayout。我对UITableView的自动布局约束是:

  • Top - 来自上方工具栏的1 - pri 1000
  • 左 - 83按钮 - pri 1000
  • 对 - 来自Super-pri 1000的20
  • 底部 - 来自Super - pri 1000的
  • 高度< = 845 - pri 750或1000(也尝试没有高度
    约束/没有影响)

笔尖是以纵向模式设计的。当我运行iPad应用程序并且键盘以纵向扩展时,UITableView scrollToRowAtIndexPath正确地将行放在键盘上方。当我以横向模式扩展键盘时,单元格向上滚动并且方式不在视图范围内 - 我必须手动向下滚动它们以输入文本。

这是我的扩展和隐藏代码:

- (void)portKeyboardWillShow:(NSNotification *)aNotification

{     CGRect keyboardBounds = [[[aNotification userInfo] objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];

[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];

for (int i=0; i<[self.tvPortsList count]; i++) {
    //when keyboard is up, that time just bring your text filed above the keyboard
    [[self.tvPortsList objectAtIndex: i] setContentInset: UIEdgeInsetsMake(0, 0, keyboardBounds.size.height, 0)];

    [[self.tvPortsList objectAtIndex: i] setScrollIndicatorInsets: UIEdgeInsetsMake(0, 0, keyboardBounds.size.height, 0)];

    [[self.tvPortsList objectAtIndex: i] scrollToRowAtIndexPath: self.portIndexPath
                                            atScrollPosition:UITableViewScrollPositionBottom
                                                    animated:YES];
}
[UIView commitAnimations];

}

0 个答案:

没有答案