似乎进入采用自动布局约束的状态。UITableView在键盘显示时使用约束来重新定位
'简单',我有一个视图,其中包含一个容器视图(与主视图大小相同),以及此图像中的另一个UITableView。
当在表格中选中一个单元格时,我将显示键盘并将容器视图的下部约束移动到键盘的高度。 (较低的限制通过IBOutlet连接)。桌子随着它受到限制而移动。
-(void)scrollInputUp:(NSInteger)height duration:(NSTimeInterval)animationDuration
{
self.keyboardHeight.constant = -height;
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:animationDuration animations:^{
[self.view layoutIfNeeded];
}];
NSIndexPath *currentIndexPath = myTable.indexPathForSelectedRow;
[myTable scrollToRowAtIndexPath:currentIndexPath atScrollPosition:UITableViewScrollPositionMiddle animated:YES];
}
我也滚动我的选定的行到位。这种方法效果很好,似乎是在约束条件下做到这一点的“标准”方式。 self.keyboardHeight是我的较低约束,所有其他约束都是固定的。然后我有我缩小的桌子。
当我解雇如下键盘我的问题出现了...
-(void)scrollInputDown:(NSTimeInterval)animationDuration
{
[self.view setNeedsUpdateConstraints];
self.keyboardHeight.constant = 0;
[UIView animateWithDuration:5 animations:^{
[self.view layoutIfNeeded];
}];
}
(五周秒钟的动画,所以我可以看看会发生什么!)
这是很难解释,但如果当键盘显示然后键盘解散时,表格视图滚动到最后一行,桌面视图“向上跳转”,而较低的行几乎在导航栏下消失。整个事情轻轻地滚动到位。这就好像tableview变成了全尺寸的,但当然是在屏幕外,然后它就会动画下来,以适应正确的位置。
我希望我已经充分描述了。描述动画并不容易,但在弹簧和支柱下方,我可以平滑地将桌面制作回原始大小和位置。在正常的动画速度下完成,这个问题会导致闪烁,这只是'可以接受',但我宁愿修复这个问题,如果任何人都可以帮忙的话?我正在拉我的头发!
谢谢
谢谢,也许如此。我甚至可以看看它。但我想了解我的问题,所以在寻求帮助。 – Fittoburst